2013-07-18 56 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])) 
相關問題