我想从下面列出的组件构建此字符串(boolean?),A_bool
。 df
是一个包含属性Class
,V1
和V2
的数据框,如果A_bool
像A=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.
我的尝试不起作用,因为它是一个字符向量,并且没有正确的引号。
答案 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"))