我有多个 data.frames (1) 具有以下结构:
'data.frame': 50742 obs. of 4 variables:
$ t : num 0.089 0.089 0.089 0.089 0.089 0.089 0.089 0.089 0.089 0.089 ...
$ timepoint: POSIXct, format: "2021-03-19 01:00:00" "2021-03-19 01:20:00" "2021-03-19 01:40:00" "2021-03-19 02:00:00" ...
$ year : chr "2021" "2021" "2021" "2021" ...
$ month : chr "03" "03" "03" "03" ...
我想向每个 data.frame 添加一个新列。这个新列中的值需要根据这个函数计算:
test <- function(s,r,t,m,n,a) {
p=(((((s-r))/((t-r)))^(((1)/(m)))-1)^(((1)/(n))))/(a)
}
t 是日期范围(第一列)中的现有值
s,r,m,n,a 是保存在单独的 data.frame 中的参数(2),如下所示:
'data.frame': 15 obs. of 9 variables:
$ Area : chr "TB" "TB" "TB" "TB" ...
$ Sites: chr "C" "C" "C" "C" ...
$ Plot : chr "num" "num" "num" "alph" ...
$ depth: int 10 20 30 10 20 30 10 20 30 10 ...
$ p : num 0.561 0.467 0.455 0.509 0.507 ...
$ a : num 0.0484 0.0428 0.0421 0.0463 0.046 ...
$ n : num 2.08 2.39 2.48 2.14 2.25 ...
$ m : num 0.519 0.581 0.597 0.532 0.555 ...
$ r : num 0.0141 0.0153 0.0151 0.0285 0.0165 ...
对于每个唯一的data.frame(1)我需要添加列,参数数据位于我的第二个data.frame的rows中(2)
我不知道如何解决我的问题,特别是因为我的参数位于第二个 data.frame 中。 非常感谢您的帮助!
您可以使用
eval
和 parse
函数,如下所述:评估以字符串形式给出的表达式:
for (i in 1:3) {
print(eval(parse(text=paste0("mean(df",i,"[,2])"))))
}
这段代码只是计算 3 个数据帧的第二列的平均值,只需使用
i
变量,你就可以完成这项工作。