【发布时间】:2019-08-21 02:39:41
【问题描述】:
我有以下数据框
test <- data.frame(x = c(6, 9, 3, NA),
y = c(3, NA, 2, 3),
z = c(6, 3, NA, 5),
h = c(NA, 6, 7, 2))
这是我要迭代的列列表
mylist <- list(test$y, test$z)
我想根据 ifelse 中的条件更改“y”和“z”列
这是我的尝试......似乎不起作用
test <- test %>%
map_df(mylist, if(is.na(mylist), 0, 1))
(实际上我有一个更大的数据框,这只是测试数据)
我需要使用 mutate 吗?
我可以在管道中使用 select 吗?像这样?
test <- test %>%
map_df(select(y, z), if(is.na(.), 0, 1))
这是预期的输出
test <- data.frame(x = c(6, 9, 3, NA),
y = c(1, 0, 1, 1),
z = c(1, 1, 0, 1),
h = c(NA, 6, 7, 2))
感谢您的帮助
【问题讨论】:
-
只做
test[c("y","z")] = +(!is.na(test[c("y","z")]))