R中作为泛型函数的子集数据
我试图创建一个函数,为整个数据集或数据子集绘制图形。该函数需要能够同时执行这两项操作,以便您可以根据需要绘制子集。我正在努力研究泛型子集函数 我目前有这段代码(我更多的是SAS用户,所以R有点让我困惑):R中作为泛型函数的子集数据,r,function,subset,R,Function,Subset,我试图创建一个函数,为整个数据集或数据子集绘制图形。该函数需要能够同时执行这两项操作,以便您可以根据需要绘制子集。我正在努力研究泛型子集函数 我目前有这段代码(我更多的是SAS用户,所以R有点让我困惑): subset首先,$运算符不能处理变量。在代码中,您总是查找名为varname的列。 将$varname替换为[varname]。 下一个错误是,您正在对一个向量进行调节,dat$varname==val将是布尔向量。 代码中的第三个错误是命名函数子集,从而在基本包中覆盖子集函数。因此,对子集
subset首先,$运算符不能处理变量。在代码中,您总是查找名为varname的列。
将$varname
替换为[varname]
。
下一个错误是,您正在对一个向量进行调节,dat$varname==val
将是布尔向量。
代码中的第三个错误是命名函数子集,从而在基本包中覆盖子集函数。因此,对子集的内部调用将是对您自己的函数的递归调用。要修复此问题,请重命名函数,或者必须指定它是使用base::subset(dat,dat[varname]==val)
调用的基本包中的子集函数。
代码中的最后一个错误是函数不返回任何内容。不要将结果分配给变量数据,而是返回它
下面是代码的外观
mySubset<-function(dat, varname, val)
if(any(dat[varname]==val)) {
subset(dat, dat[varname]==val)
} else {
NA
}
mySubsetPlease提供完整的代码,包括生成错误的测试代码和所有输入,以便其他人可以在自己的机器上重现问题。非常感谢您的回复。我在代码中意识到了dat$varname的问题,但是当我按照您指示的方式输入它时,它表示找不到变量。所以,它仍然没有以dat$varnameOh的形式读取它。我还忘记了我试图返回的是一个作为我们正在处理的新数据集的子集数据的赋值。因此,首先,datavarname应该是一个字符串,因此,如果列被称为x,则必须使用“x”而不是x来调用函数。最好在函数使用数据之外进行赋值
mySubset<-function(dat, varname, val)
if(any(dat[varname]==val)) {
subset(dat, dat[varname]==val)
} else {
NA
}
mySubset <- function(dat,varname,val) dat[dat[varname] == val]