r - 在 R 中创建一个新列,该列使用引用其他列的方程
问题描述
嗨,我正在尝试在名为“Erie”的数据集中创建一个名为“pCO2”的新列。我的数据集目前有 ph、alk 和 temp 值。如果您有 pH 值和碱度值,有一个名为 AquaEnv 的软件包可以让您预测 CO2 值。
这是在“pCO2 列”中找到我想要的值的方程式
ae<-aquaenv(S=0,t=0,p=0, SumCO2 = NULL, pH= 7.7,TA=90 )
ae$SumCO2
在我的伊利数据集中引用相应的 pH 值和碱度值时,有没有办法做到这一点?
这是我的想法,但它没有给出正确的值。
Erie$pCO2<-aquaenv(S=0,t=0,p=0, SumCO2 = NULL, pH=Erie$pH,TA=
Erie$ALKALINITY..mg.L.)
谢谢!
解决方案
这是一个令人惊讶的常见问题,没有真正好的答案。
让它工作的最快方法是:
df$SumCO2 <- sapply(
split(Erie, 1:nrow(Erie)),
function(r) {
return(aquaenv(S=0,t=0,p=0,SumCO2=NULL, pH=r$pH, TA=r$ALKALINITY..mg.L.)$SumCO2)
}
)
为了完成它,这会将Erie
data.frame 拆分为一组 data.frames(每行一个),并为每一行调用此函数。
稍微干净一点的mapply
方法是:
mapply(
function(pH, TA) {
return(aquaenv(S=0,t=0,p=0,SumCO2=NULL, pH=pH, TA=TA)$SumCO2)
}, Erie$pH, Erie$ALKALINITY..mg.L
)
其他方法的一些类似问题:
推荐阅读
- typescript - 键入自定义操作类型
- javascript - 如何使用 p5.js 在画布上绘制图块
- python - 我无法在 Hadoop 集群中执行 mapreduce 作业
- python - 如何分别打印出函数的参数?
- r - 如何使用多个 Stargazer 表创建单个 pdf
- regex - 仅当一组字符串中的一个匹配时,如何才能返回 true?
- css - 使嵌套在行中的引导列采用全屏高度
- php - 使用 Wordpress 自定义字段隐藏特定页面的 WooCommerce 产品元(SKU、类别、标签)
- d3.js - 以“YMD H:M:S.MS”格式解析时间数据集给我 0NaN-NaN-NaNTNaN:NaN:NaN.NaNZ
- angular - EventEmitter 和 ag-grid-angular 如何在 ag-grid-angular 中使用 `emit` 方法