如何建立应用函数正在使用的列号,以使用该数字来检索由该数字索引的变量

时间:2019-05-17 05:32:26

标签: r apply

我正在将R中的for循环转换为具有多个输入数据集的模型。在for循环中,我使用当前循环值从其他数据集中检索值。我正在尝试使用apply函数(在数据集中的列上)复制此内容,但是我正在努力建立apply函数的索引,以便从其他数据中检索适当的变量

apply函数通过函数中的变量引用列,这很好,我尝试使用两个colname(在用数字命名了我的各个列之后),但没有任何乐趣。下面是一个示例数据集和for循环,提供了我想要实现的功能(有些简化)。向量的长度和表格数据集中的列数将始终相等。

iteration<-1:3
df <- data.frame("column1" = 6:10, "column2" = 12:16, "column3" = 31:35)
variable1<-rnorm(3,mean = 25)
variable2<-rnorm(3, mean = 0.21)
outcome<-numeric()
for (i in iteration) {
  intermediate<-(mean(df[,i])*variable1[i])^variable2[i]
  outcome<-c(outcome,intermediate)
}
outcome

预期结果是以上结果...请尝试应用

我想象的是这样的:

apply(df, 2, function(x) (mean(x)*variable1[colnumber(x)])^variable2[colnumber(x)]

或者也许

apply(df, 2, function(x) (mean(x)*variable1[x])^variable2[x])

但是这两个显然不起作用。

1 个答案:

答案 0 :(得分:0)

初次使用者对任何礼节问题表示歉意,但使用purrr软件包找到了我自己的问题的答案,但这也许对其他人有帮助

pmap(list(df, variable1, variable2), function(df, variable1, variable2) (mean(df)*variable1)^variable2)