2013-07-18 19 views
-3

我对R和编程相对较新,所以我的问题可能是由于缺乏经验和隐晦的错误消息。我已经在plyr软件包中进行了大量的调查并尝试了不同版本的应用和功能。我的问题的根源是如何让数据框中单元格的值作为函数中的参数提供?我会尽我所能提供示例数据。R使用数据框中的单元格值作为已定义的自定义函数中的参数

我正在调查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 

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

+0

你可以试试'申请(MYDATA,1,函数(X)的MyFunction(X [1],X [2]))' – harkmug

+0

我觉得我以前看过这个,也许我只是误解它的意思。实际的功能是86行代码。整个函数是否需要在apply()中定义? – tds7

+0

尝试此操作后,它似乎工作。但是,我有一个打印(“您的数据已成功处理”)在我的功能结束。运行后,我得到这个输出: '[1]“您的数据已成功处理。” [1]“您的数据已成功处理。” [1]“您的数据已成功处理。” [1]“您的数据已成功处理。” [1]“您的数据已成功处理。” “您的数据已成功处理。” “您的数据已成功处理。” [4]“您的数据已成功处理。”' 它运行8次了吗? – tds7

回答

0

(对于竣工结算的问题):

apply(mydata,1, function(x) myfunction(x[1],x[2])) 
相关问题