我试图在函数中传递变量的值,并在简单的公式中使用它,但不能。它给了我以下错误
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”的总和
答案 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