[英]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.