我在編寫一個函數,它將打開一些.csv文件並對這些數據幀的特定部分執行幾個計算。我在傳遞列名作爲函數中的參數時遇到問題,我不知道爲什麼。因此,像這樣(最小的工作例如,我的功能比這更復雜):在R函數中使用csv列名作爲參數
MyFunction <- function(file, columnname){
data <- read.table(file,sep=",",header=TRUE);
mean(data$columnname);
}
我在我的桌面上名爲「test.csv」的.csv,和所有它裏面有一個叫列「數字」和數字1:10。如果我運行這些:
MyFunction("~/Desktop/test.csv",numbers)
MyFunction("~/Desktop/test.csv","numbers")
我得到這個錯誤:
[1] NA
Warning message:
In mean.default(data$columnname) :
argument is not numeric or logical: returning NA
但是,如果我運行此:
data <- read.table("~/Desktop/test.csv",sep=",",header=TRUE);
mean(data$numbers);
我得到這個:
[1] 5.5
......這是我想要的。
我不知道我的功能是如何在這裏手工完成的。我可以使用函數參數來查找和打開文件,但使用data $參數中的函數參數似乎會導致錯誤。爲什麼是這樣?有什麼解決方法?
你可能只是'$'使用支架的索引,而不是索引。例如,使用'Idx < - match(columnname,names(data))'然後'mean(data [,Idx])'來獲取列號。 – nrussell 2014-10-16 21:52:33
我真的結束了使用這個,雖然這兩個答案都非常有幫助! – wugology 2014-10-16 22:27:52