gpt4 book ai didi

r - Dplyr 中的条件评估

转载 作者:行者123 更新时间:2023-12-03 21:40:36 25 4
gpt4 key购买 nike

我有一个字符向量 r <- c() .我想根据 r 的长度对数据帧进行变异
这有效

iris %>% if(length(r) > 0) mutate(Test = 1) else .
不起作用 当我扩展以添加更多 dplyr 动词时
iris %>% if(length(r) > 0) mutate(Test = 1) else . %>% mutate(Test2 = 1)
我只是在寻找基于 dplyr 的解决方案。

最佳答案

由于有多个语句,将其包裹在 {}

r <- c()
iris %>%
{if(length(r) > 0) {
mutate(., Test = 1)
} else .}
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3.0 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
...
-使用 r 进行测试长度 > 0
r <- 5
iris %>%
{if(length(r) > 0) {
mutate(., Test = 1)
} else .}
Sepal.Length Sepal.Width Petal.Length Petal.Width Species Test
1 5.1 3.5 1.4 0.2 setosa 1
2 4.9 3.0 1.4 0.2 setosa 1
3 4.7 3.2 1.3 0.2 setosa 1
...

但是,这可以在没有循环的情况下轻松修改,即通过添加 1 将逻辑向量转换为数字索引(如 R 中的索引从 1 开始)。用它来选择一个 list值为 1 和 NULL。如果长度为 0,则选择 NULL,因此不会创建列
iris %>%
mutate(Test = list(NULL, 1)[[1 + (length(r) > 0)]])

关于r - Dplyr 中的条件评估,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68024981/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com