首页 > 解决方案 > 如何计算R中的海水密度

问题描述

我正在尝试使用此示例https://cran.r-project.org/web/packages/gsw/vignettes/gsw.html计算一个位置的海水密度。

我不断得到 NA,我不知道为什么。是因为纬度/经度仅适用于一个站点吗?

 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

对第一个值执行此操作会产生结果,但在我尝试对整个数据帧执行此操作时不会:

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

标签: r

解决方案


你可以试试 :

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

推荐阅读