【发布时间】:2023-04-07 03:35:01
【问题描述】:
如何用Tidyverse 替换R 中子集的值?
以cars数据为例,如果我想把小于30的speed全部改成0,可以使用下面的命令:
cars[cars["speed"] < 30,] <- 0
使用Tidyverse,可以生成具有更多可读命令的相同子集:
cars %>% filter(speed < 30) %>% mutate(speed =0)
然而,这改变了我们从cars 中提取的数据子集,而不是cars 中的观察值。
我可能遗漏了一些明显的东西,但有没有一种直观的方法可以用Tidyverse 做同样的事情?虽然cars[cars["speed"] < 30,] <- 0 在大多数情况下都能正常工作,但当一个人需要满足 5 个以上的条件时,它就会变得非常笨拙。
【问题讨论】:
-
我认为这可能是您不应该尝试使所有内容“整洁”的情况。
replace就是x[list] <- values,这与你所做的差不多,而且它是 - IMO - 具有可读性和抽象性。