繁体   English   中英

在R函数中使用CSV列名称作为参数

[英]Using csv column names as parameter in R function

我正在尝试编写一个函数,该函数将打开一些.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 $ parameter中使用函数参数似乎会导致错误。 为什么是这样? 有什么解决方法?

尝试这个:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM