我有一个像这样的data.frame
:
value condition
1 0.46 value > 0.5
2 0.96 value == 0.79
3 0.45 value <= 0.65
4 0.68 value == 0.88
5 0.57 value < 0.9
6 0.10 value > 0.01
7 0.90 value >= 0.6
8 0.25 value < 0.91
9 0.04 value > 0.2
structure(list(value = c(0.46, 0.96, 0.45, 0.68, 0.57, 0.1, 0.9,
0.25, 0.04), condition = c("value > 0.5", "value == 0.79", "value <= 0.65",
"value == 0.88", "value < 0.9", "value > 0.01", "value >= 0.6",
"value < 0.91", "value > 0.2")), class = "data.frame", row.names = c(NA,
-9L))
我希望能够针对每行的condition
列中的字符串进行评估。
因此,结果会像这样。
value condition goal
1 0.46 value > 0.5 FALSE
2 0.96 value == 0.79 FALSE
3 0.45 value <= 0.65 TRUE
4 0.68 value == 0.88 FALSE
5 0.57 value < 0.9 TRUE
6 0.10 value > 0.01 TRUE
7 0.90 value >= 0.6 TRUE
8 0.25 value < 0.91 TRUE
9 0.04 value > 0.2 FALSE
我认为在 dplyr
框架内有一个方便的 NSE 解决方案。我尝试过使用 !!
和 expr()
等方法进行实验。当我尝试使用 condition
进行子集筛选时,我得到了一些有希望的结果。
result <- df[0,]
for(i in 1:nrow(df)) {
result <- rbind(result, filter_(df[i,], bquote(.(df$condition[i]))))
}
但我不喜欢这个解决方案,也不完全符合我的要求。
我希望有人能帮忙。
更新:我正在尝试避免使用eval(parse(..))
。
eval(parse(..))
,但我试图在dplyr
中使用NSE找到一个不需要它的解决方案。我应该更加具体化。 - Humpelstielzchen