这感觉像是一个初学者的问题。

在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/

10-12 17:10
查看更多