繁体   English   中英

在函数中传递变量名

[英]Passing variable name in a function

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

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”的总和

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

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

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

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

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

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

夏季(总和,虹膜, “Sepal.Width”)

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

暂无
暂无

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

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