构建一个可以作为布尔值的字符串

时间:2017-03-06 12:55:46

标签: r

我想从下面列出的组件构建此字符串(boolean?),A_booldf是一个包含属性ClassV1V2的数据框,如果A_boolA=df[A_bool,]那样运行,那么A }应该是一个带有"适当"的数据框。提取的行集。

A_bool=df$Class=='democrat'& df$V1=='y' & df$V2=='n'

dfv=c("df$","df$","df$")
vars=c("Class","V1","V2")
ops=c("==", "==", "==")
vals=c('democrat','y','n')
A_bool=paste(dfv,vars,ops,vals,sep="") #doesn't work.

我的尝试不起作用,因为它是一个字符向量,并且没有正确的引号。

1 个答案:

答案 0 :(得分:1)

paste会返回您需要解析的字符。但是,强烈建议不要使用解析,因为它效率低下,导致代码可读性降低,并且可能会产生严重的安全问题。

以下是使用for循环的更好方法的示例。请注意我如何使用[[代替$(请参阅help("Extract"))。我还利用逻辑运算符是R。

中的函数
myEvent <- function(DF, vars, ops, vals) {
  ops <- lapply(ops, getFunction)
  idx <- TRUE
  for (i in seq_along(ops)) {
    idx <- idx & ops[[i]](DF[[vars[[i]]]], vals[[i]])
  }
  DF[idx,]
}

myEvent(iris, c("Sepal.Length", "Species"), 
        c("<", "=="), list(5, "setosa"))