动态子集化 - 通过函数中定义的变量进行子集化

时间:2013-06-12 09:15:14

标签: r char

v1 = c(1,2,3)
v2 = c("a","b",NA)
X = data.frame(v1,v2)

f = function(X,d){
    subset(X,is.na(d)==0)
    }
f(X,"v2")

如何获取X的子集,其中任何给定列(输入到函数的参数中)都不会丢失?

3 个答案:

答案 0 :(得分:5)

注意:函数subset不应仅在函数中使用,而应仅以交互方式使用(请参阅here)。

f <- function(X, d) {
  X[!is.na(X[d]), ]
}

> f(X,"v2")
  v1 v2
1  1  a
2  2  b

答案 1 :(得分:3)

如果使用complete.cases,则可以输入列名称向量。

f <- function(X,d) {
     X[complete.cases(X[,d]),]
 }

答案 2 :(得分:1)

您不需要功能。只是做:

X[!is.na(X$v2),]