在函数中传递变量名

时间:2019-01-17 07:57:46

标签: r function variables

我试图在函数中传递变量的值,并在简单的公式中使用它,但不能。它给了我以下错误

data $ column_namep中的错误:$运算符对原子向量无效

这是代码:

test = function(func,data="file3",column_name,x=1){
  func(data$column_name[x])
}

test(sum,column_name = "chemical")

预期结果是我获得column_name“ chemical”的总和

3 个答案:

答案 0 :(得分:0)

总结一个元素的总和不是很有意义,这是运行时没有错误的代码:

test = function(func,data="file3",column_name,x=1){
  func(get(data)[[column_name]][x])
}

file3 <- iris
test(func = sum, column_name = "Sepal.Length")
[1] 5.1

答案 1 :(得分:0)

按column_name获取总和。您可以使用索引(无需使用列名,我希望使用此名称)或列名来访问列数据。以下代码提供了第2列的总和,即"Sepal.Width"数据集的iris

test = function(func,data=iris,x){
  func(data[,x]) # Can access data using column index or name
}

test(sum,x=2) or test(sum,x="Sepal.Width")

输出:

[1] 458.6

答案 2 :(得分:0)

您可以添加一条检查数字类型的语句:

 summer<-function(func,df,col.name){
  x<-df
  mynames<-names(df)
  col.name1<-which(mynames==col.name)
  x<-func(df[col.name1])
  x
  }

summer(sum,iris,“ Sepal.Width”)

summer(sum,iris,"Sepal.Width")
[1] 458.6