使用csv列名作为R函数中的参数

时间:2014-10-16 21:49:29

标签: r function csv

我试图编写一个函数来打开一些.csv文件,并对这些数据帧的特定部分进行多次计算。我在将函数中的列名称作为参数传递时遇到问题,我不确定原因。所以像这样(最小的工作示例,我的函数比这更复杂):

MyFunction <- function(file, columnname){
    data <- read.table(file,sep=",",header=TRUE);
    mean(data$columnname);
    }

我的桌面上有一个名为&#34; test.csv&#34;的.csv,其中包含一个名为&#34; number&#34;的列。和数字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 $参数中的函数参数似乎会导致错误。为什么是这样?有什么解决方法?

1 个答案:

答案 0 :(得分:3)

试试这个:

MyFunction <- function(file, columnname) {
    data <- read.csv(file)
    mean(data[[columnname]])
}

注意:

b <- "a"
DF <- data.frame(a = 1, b = 2)
DF$b
## [1] 2
DF[[b]]
## [1] 1