数据框:使用函数(以及来自附加数据框的函数参数)计算新列的值

问题描述 投票:0回答:1

我有多个 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 中。 非常感谢您的帮助!

r dataframe function mutate
1个回答
0
投票

您可以使用

eval
parse
函数,如下所述:评估以字符串形式给出的表达式

for (i in 1:3) {
print(eval(parse(text=paste0("mean(df",i,"[,2])"))))
}

这段代码只是计算 3 个数据帧的第二列的平均值,只需使用

i
变量,你就可以完成这项工作。

© www.soinside.com 2019 - 2024. All rights reserved.