使用dplyr有条件地设置列名称

rmf

我想根据列数设置列名。

例如,

#iris1 <- iris[,1:4]
if(ncol(iris)==4) colnames(iris) <- c("a","b","c","d")
if(ncol(iris)==5) colnames(iris) <- c("a","b","c","d","e")

我正在寻找一种使用dplyr管道进行此操作的方法。像这样:

iris1 %>%
  setNames(ifelse(ncol(.)==4,c("a","b","c","d"),c("a","b","c","d","e")))

更新: akrun的回答给了我这个想法,在这个特定用例中对我有用。

cnames <- c("a","b","c","d","e")
iris1 %>% setNames(cnames[1:ncol(.)])

该解决方案不能一概而论。欢迎提供更好的解决方案。

阿克伦

如果这是基于用户输入“ n”的,那么我们可以使用 rename_at

library(dplyr)
n <- 4
iris %>%
     rename_at(seq_len(n), ~ letters[seq_len(n)])

可以包装成一个函数

rename_fn <- function(dat, n){
           dat %>%
             rename_at(seq_len(n), ~ letters[seq_len(n)])
 }

rename_fn(iris, 4)
rename_fn(iris, 5)

如果要更改数据集的所有列,则更简单的选择是 set_names

iris %>%
     set_names(cnames[seq_len(ncol(.))])

或在 base R

setNames(iris, cnames[seq_len(ncol(iris))])

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用dplyr有条件地替换tibble中的列名

来自分类Dev

使用`dplyr`有条件地改变列值

来自分类Dev

使用dplyr有条件地更新多个变量

来自分类Dev

有条件地计入dplyr

来自分类Dev

使用vueJS有条件地设置href属性

来自分类Dev

R:根据列内容有条件地提取列名称

来自分类Dev

有条件地重命名多个列名

来自分类Dev

有条件地替换 dplyr 中的数值

来自分类Dev

在dplyr中有条件地突变数据

来自分类Dev

使用dplyr named_ *有条件地重命名变量

来自分类Dev

使用dplyr有条件地将行插入数据框

来自分类Dev

重命名变量并有条件地更改 R 中的值(使用 dplyr 包)

来自分类Dev

如何使用dplyr有条件地按组更改列中的值?

来自分类Dev

使用dplyr有条件地替换列中的值

来自分类Dev

使用dplyr有条件地替换因子变量的级别

来自分类Dev

使用dplyr mutate函数根据当前行有条件地创建新变量

来自分类Dev

使用HttpParams和FromObject有条件地添加参数,并使用变量作为键名称

来自分类Dev

有条件地符合设置为 ExpressibleByDictionaryLiteral 协议

来自分类Java

在Maven中有条件地设置属性

来自分类Dev

在 groupby 熊猫中有条件地设置值

来自分类Dev

React-native - 有条件地设置高度

来自分类Javascript

有条件地设置对象属性

来自分类Dev

有条件地设置mdButton属性

来自分类Dev

有条件地在角度4中设置属性

来自分类Dev

有条件地设置环境 Azure DevOps

来自分类Dev

有条件地设置MessageBox类型

来自分类Dev

有条件地显示设置页面?

来自分类Dev

从 PostgreSQL 块有条件地设置 dbname

来自分类Dev

有条件地设置和清除间隔