r - dplyr::rename() 如果满足列内容的条件

标签 r if-statement dplyr conditional-statements rename

假设我想根据列的内容包含特定值的条件来重命名列。

例如,如果iris$Species包含“virginica”,则将Species重命名为flower.name,否则保留名称为物种

此代码有效:

library(dplyr)
iris <- if("virginica" %in% iris$Species){
  rename(iris, flower.name = Species)
}
iris %>% names

但我希望他们是一种更优雅的 dplyr 方式,可以使用现有函数之一(例如 rename_if())来执行此操作?

最佳答案

一种选择可能是:

iris %>%
 rename_with(~ "Flower.Name", 
             .cols = Species & where(~ any(. %in% "virginica")))

    Sepal.Length Sepal.Width Petal.Length Petal.Width Flower.Name
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
5            5.0         3.6          1.4         0.2      setosa
6            5.4         3.9          1.7         0.4      setosa
7            4.6         3.4          1.4         0.3      setosa
8            5.0         3.4          1.5         0.2      setosa
9            4.4         2.9          1.4         0.2      setosa
10           4.9         3.1          1.5         0.1      setosa

关于r - dplyr::rename() 如果满足列内容的条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66787294/

相关文章:

r - 如何向使用 tidy eval 框架创建的函数添加检查?

r - 加载包时加载数据对象

c - 如何对最后一个 else 语句不执行任何操作,然后继续处理数组的下一部分?

c# - if(var == true) 是否比 if(var != false) 更快?

r - 如何在两种不同类型的几何图形上创建图例ggplot2

r - 如何在 R 中提取两列数据

从 dplyr 中的变量中引用列名

r - 如何计算R中的第二个单词字符串

javascript - 如果数字在两个数字之间加/减 10 addclass

r - 如何在 dplyr 中使用 group_by() 和 do() 为每个因子级别应用函数