这感觉像是一个初学者的问题。
在R中,是否可以根据传递给函数的参数使用$运算符?
我正在尝试编写一个简单的函数:
subs <- function(x, y){
x<- subset(x, x$UR!=0)
x<- subset(x, !is.na(x$y))
x
}
返回:
Warning message:
In is.na(x$y) : is.na() applied to non-(list or vector) of type 'NULL'
因为我有30多个列,所以用[y]进行计数将无济于事。
有什么方法可以在函数中使用$动态调用?
谢谢。
最佳答案
扩展@akrun的评论:
subs <- function(x, y){
x <- x[x[,"UR"]!=0,]
x <- x[!is.na(x[,y]),]
x
}
您对该函数的调用应类似于
subs(dataframe, "variable.name")
,后者用引号引起来。前两行的方括号内的表达式返回一个TRUE / FALSE值的 vector ,标识
x
中满足指定条件的行(例如,对于x中的行i,“UR”列的值不等于0)。在表达式之后,用逗号将其放在与x相邻的括号中,使用该 vector 从x中仅选择嵌套表达式的结果为TRUE的那些行(因此,以逗号结尾)。N.B.该答案假定UR是该数据帧中变量的名称。
关于r - 在函数内调用$,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31921458/