【发布时间】:2018-05-02 01:08:34
【问题描述】:
这是我的数据:
vec1 <- c("A", "B")
vec2 <- c("A", "B", "C")
df1 <- structure(list(A = c("X", "Y"), data = list(structure(list(B = c(4L, 9L)), .Names = "B", row.names = c(NA, -2L), class = c("tbl_df", "tbl", "data.frame")), structure(list(B = c(5L, 2L, 8L, 2L)), .Names = "B", row.names = c(NA, -4L), class = c("tbl_df", "tbl", "data.frame"))), C = list(c("A", "B"), c("A", "B", "C"))), class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA, -2L), .Names = c("A", "data", "C"))
这是我的代码:
df2 <- df1 %>% mutate(data = map2(data, C, ~ if(identical(.y, vec1)) filter(.x, B < 5) else filter(.x, B > 4)))
为了方便扩展条件的数量,我想将上面代码中的 if else 构造转换为 case_when 构造。我怎样才能做到这一点?
【问题讨论】:
-
我相信您错过了数据中的
vec1。 -
@raymkchow 我的错,现在添加了这些。感谢您指出!