如何使用dplyr以新列名作为字符串重命名选定的列

永不圣徒

我有以下问题:

library(tidyverse)
df <- structure(list(Sepal.Length = c(5.1, 4.9, 4.7, 4.6, 5), Sepal.Width = c(3.5, 
3, 3.2, 3.1, 3.6), Petal.Length = c(1.4, 1.4, 1.3, 1.5, 1.4)), .Names = c("Sepal.Length", 
"Sepal.Width", "Petal.Length"), row.names = c(NA, 5L), class = c("tbl_df", 
"tbl", "data.frame"))

看起来像这样:

> df
# A tibble: 5 × 3
  Sepal.Length Sepal.Width Petal.Length
*        <dbl>       <dbl>        <dbl>
1          5.1         3.5          1.4
2          4.9         3.0          1.4
3          4.7         3.2          1.3
4          4.6         3.1          1.5
5          5.0         3.6          1.4

我想要做的是替换Sepal.LengthPetal.Length使用附加的字符串to_app <- ".xxx"导致:

  Sepal.Length.xxx Sepal.Width Petal.Length.xxx
          5.1         3.5          1.4
          4.9         3.0          1.4
          4.7         3.2          1.3
          4.6         3.1          1.5
          5.0         3.6          1.4

我尝试此错误:

>df %>% rename(paste(Sepal.Length,to_app,sep="") = Petal.Length,paste(Sepal.Width,to_app,sep="") = Petal.Length)
Error: unexpected '=' in "df %>% rename(paste(Sepal.Length,to_app,sep="") ="
塔拉特

如果要使用dplyr的rename函数,最好创建一个命名的vector / list并使用.dots标准评估版中参数调用它

cols <- c("Sepal.Length", "Petal.Length")
to_app <- ".xxx"
cols <- setNames(cols, paste0(cols, to_app))

df %>% rename_(.dots = cols)

## A tibble: 5 × 3
#  Sepal.Length.xxx Sepal.Width Petal.Length.xxx
#*            <dbl>       <dbl>            <dbl>
#1              5.1         3.5              1.4
#2              4.9         3.0              1.4
#3              4.7         3.2              1.3
#4              4.6         3.1              1.5
#5              5.0         3.6              1.4

但是请注意,此方法可能会随着dplyr的下一个版本0.6.0更改(请参见例如http://blog.rstudio.org/2017/04/13/dplyr-0-6-0-coming-soon/http://dplyr.tidyverse.org/articles/programming.html)。

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在dplyr的重命名功能中输入新的列名作为字符串

如何使用整洁的评估与列名作为字符串?

ggplot和dplyr以及列名作为字符串

如何重命名作为索引的列?

dplyr 使用另一个列名作为参考重命名列

在dplyr中,如何删除和重命名不存在的列,操纵所有名称以及使用字符串命名新变量?

LINQ-使用列名作为字符串参数访问列

如何使用列名作为字符串的数据框在python中制作稀疏矩阵

用字符串向量重命名选定的列

Dplyr使用字符串变量作为表达式重命名

使用列名作为要替换的字符串值执行字符串替换

大熊猫以新的列名作为字符串分配

如何在 C# 中将命名空间的全名作为字符串获取?

如何使用dplyr通过2个列集将内部联接的列名作为变量传递

取消透视多个列-使用CROSS APPLY将列名的子字符串作为新列

在包装函数中使用 dplyr 将变量名作为字符串返回

匹配列标题并重命名以追加带有列名称的字符串

PySpark-重命名JSON中的键名作为CSV文件中的字符串列存储

如何将 Spark 列的别名作为字符串获取?

如何获得具体的类名作为字符串?

如何获取类名作为字符串?

PostgreSQL使用变量名作为字符串文字

如何在 Python 中使用变量名作为字符串

如何使用类名和函数名作为字符串调用Scala函数

如何使用变量名作为字符串访问变量

如何使用泛型的类名作为结果类型的字符串值

R dplyr ::使用字符串变量重命名并选择

R dplyr:使用字符串函数重命名变量

如何使用for循环和衍生自其他df的新列名重命名df的列?