如何结合mutate_all和ifelse

时间:2018-12-12 03:06:53

标签: r dplyr

我想使用mutate_all()遍历data.frame的所有列,然后使用ifelse()有选择地更改值。

testdf <- data.frame("a"=c(1,2,3), "b"=c(4,5,6), "c"=c(7,8,9))

mutate_all(testdf, ifelse(.>9,10,.))

但这不起作用。我总是得到“对象”。未找到”。如何引用通过mutate_all()函数传递的各个值?我以为。这样工作吗?这有效:

mutate_all(testdf, funs(.*2))

1 个答案:

答案 0 :(得分:4)

尝试以下任一方法:

testdf %>% mutate_all(function(x) ifelse(x>9,10,x))

testdf %>% mutate_all(funs(ifelse(.>9,10,.)))

testdf %>% mutate_all(testdf, ~ifelse(.>9,10,.))

testdf %>% mutate_all(~ pmin(., 10))

testdf %>% mutate_all(pmin, 10)

testdf %>% mutate_all(~ replace(., . > 9, 10))

testdf %>% replace(. > 9, 10) 

以下是Ronak Shah的评论中的最后两个。