简体   繁体   English

如何计算R中的海水密度

[英]How to calculate seawater density in R

I am trying to calculate seawater density for one location using this example https://cran.r-project.org/web/packages/gsw/vignettes/gsw.html .我正在尝试使用此示例https://cran.r-project.org/web/packages/gsw/vignettes/gsw.html计算一个位置的海水密度。

I keep getting NA's and I am not sure why.我一直在获得 NA,但我不知道为什么。 Is it because of the lat/long being only for one site?是因为纬度/经度仅适用于一个站点吗?

 library(gsw)

 site <- cbind(125.5, -48.5)

 Depth = c(0, 2.4, 4.7, 7.1, 9.4, 11.8) 
 Time = c(0, 30, 60, 90, 120, 150)
 Temp = c(9.3668098449707, 9.35547698974609, 9.34461633682251, 9.33601398468018, 9.32814388275147, 9.32195755004883)
 Sal = c(34.2999114990234, 34.3229992675781, 34.3451250457764,34.35333984375, 34.3591761779785, 34.3610186767578)

 data <- cbind.data.frame(Depth, Time, Temp, Sal)


 data$Latitude <- site[1]
 data$Longitude <- site[2]

 SA <- gsw_SA_from_SP(SP = data$Sal,
                 p = data$Depth,
                 longitude = data$Longitude,
                 latitude = data$Latitude)

 CT <- gsw_CT_from_t(SA,data$Temp,data$Depth)
 data$rho <- gsw_rho(SA,CT,10.1325)-1000

Doing this for the first value yield a result but not when im trying to do it for the entire dataframe:对第一个值执行此操作会产生结果,但当我尝试对整个数据帧执行此操作时不会产生结果:

 (SA <- gsw_SA_from_SP(SP=34.2999114990234, p=0, longitude=125.5, latitude=-48.5))

You can try :你可以试试 :

Columns = c("Sal","Depth")
Results = apply(data[Columns],MARGIN = 1,function(x){
                                                     gsw_SA_from_SP(x[1],
                                                     x[2],
                                                     site[1],
                                                     site[2])
                                                    })

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM