-3

总的来说,我对 R 和编程相对较新,所以我的问题可能是由于缺乏经验和神秘的错误消息。我已经对 plyr 包中不同版本的 apply 和函数进行了大量调查和试验。我的问题的根源是如何将数据框中单元格的值作为参数提供给我的函数?我会尽力提供示例数据。

我正在使用 R 中的调查数据,所以我有一个包含许多列和行的数据框。我创建了一个自定义函数来处理一些数据。我首先运行该函数的脚本,以便将其加载到 RStudio 的工作区中。该函数有两个参数:

myfunction <- function(id, info){
  # various data processing
}

myfunction 不返回任何内容。使用真实数据时,它会为我输出一些 .CSV,所以我不需要从中获取任何东西——只需要它使用每一行的值来运行。

为了这个例子,假设我的数据框(称为 mydata)只有两列(事实上,如果解决方案需要,我可以在整个过程中将其子集化为仅这两列)。

ID Gender
 1    M
 2    F
 3    F
 4    M

我想要发生的是让 R 遍历每一行并提供单元格的值作为 myfunction 中的两个参数:

# So for the first row, it should do
myfunction("1", "M")
# And the second:
myfunction("2", "F")

我得到的最接近的是:

a_ply(mydata, c(1,2), print)
  ID
1  1
2  2
3  3
4  4
  Gender
1   M
2   F
3   F
4   M

这似乎是正确的方向,但是每当我将 myfunction 放入 a_ply 时,我都无法让它以我想要的方式工作。我要么收到此错误消息:

Error in eval(expr, envir, enclos) : object 'X' not found
## Which I believe is actually an error from myfunction, which would mean the
## ID value is not passing through to it correctly

或者在使用该 a_ply 命令的不同版本时,我收到此错误:

Error in file(file, "rt") : invalid 'description' argument

提前感谢您的帮助,到目前为止,我已经能够在这里阅读文档和许多其他帖子,但我似乎找不到任何解释这一点的东西。

4

1 回答 1

0

(用于完成和结束问题):

apply(mydata,1, function(x) myfunction(x[1],x[2]))
于 2013-07-18T18:21:10.330 回答