dplyr:使用rename_重命名变量

查克拉法蒂

我正在尝试重命名链中的几个变量:

df_foo = data_frame(
  a.a = 1:10,
  "b...b" = 1:10,
  "cc..d" = 1:10
)

df_foo %>% 
  rename_(
    .dots = setNames(
      names(.),
      gsub("[[:punct:]]", "", names(.)))
  )

这很好用,但是当其中一个变量的名称中有空格时:

df_foo = data_frame(
  a.a = 1:10,
  "b...b" = 1:10,
  "c c..d" = 1:10
)

df_foo %>% 
  rename_(
    .dots = setNames(
      names(.),
      gsub("[[:punct:]]", "", names(.)))
  )

我收到此错误:

Error in parse(text = x) : <text>:1:3: unexpected symbol
1: c c..d
      ^

我不确定这是从哪里开始的,因为我是gsub直接运行的

setNames(
      names(df_foo),
      gsub("[[:punct:]]", "", names(df_foo)))

我没有得到一个错误。不知道这是怎么回事。


现在,这GH问题页面作为问题#2391提出dplyr

阿克斯曼

一般而言:我强烈建议您不要将变量名与空格一起使用。它们是一种痛苦,通常会带来超出其价值的麻烦。

这是导致此错误的原因。

rename_派遣到dplyr:::rename_.data.frame该函数的第一行是:

dots <- lazyeval::all_dots(.dots, ...)

lazyeval则函数将调用lazyeval::as.lazy_dots,使用lazyeval::as.lazy,它本身使用lazyeval:::as.lazy.character该电话lazy_(parse(text = x)[[1]], env)现在,parse()期望有效的R表达式作为其文本参数:

文字:字符向量。要解析的文本。元素被当作文件的行对待。(来自help("parse")

这就是为什么rename_似乎不喜欢带有空格的字符向量,而我们却收到“ Error in parse(text = x)”的原因:

lazyeval:::as.lazy(names(df_foo)[2])
<lazy>
  expr: b...b
  env:  <environment: base>
lazyeval:::as.lazy(names(df_foo)[3])
Error in parse(text = x) : <text>:1:3: unexpected symbol
1: c c..d
      ^

我不知道有什么解决方案,只能使用base进行这种简单的重命名。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用dplyr重命名列

来自分类Dev

重命名dplyr中数据框的所有列,而无需使用rename()

来自分类Dev

使用C函数rename()重命名文件

来自分类Dev

使用dplyr重命名重命名多列(across(

来自分类Dev

使用dplyr编程:使用粘合语法用变量重命名列

来自分类Dev

无法使用dplyr重命名列

来自分类Dev

R:使用 dplyr 重命名因子的级别

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

使用Jython在循环中重命名变量

来自分类Dev

使用函数重命名字符变量

来自分类Dev

R使用rename_with()使用通配符重命名多列

来自分类Dev

使用os.rename重命名文件导致NameError

来自分类Dev

使用.rename和.endswith重命名多个图像

来自分类Dev

使用unlink()和rename()删除和重命名文件

来自分类Dev

使用tidyselect函数使用dplyr重命名列名

来自分类Dev

动态重命名变量

来自分类Dev

使用dplyr通过函数式编程重命名列

来自分类Dev

使用带有dplyr的数据框名称动态重命名

来自分类Dev

使用dplyr通过函数式编程重命名列

来自分类Dev

在 dplyr 中使用重命名和汇总时出错

来自分类Dev

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

来自分类Dev

JS:重命名变量以进行重构(使用AST而不是文本)

来自分类Dev

使用gofmt重构工具重命名全局变量

来自分类Dev

使用do循环对Sas重命名变量,如果满足条件

来自分类Dev

如何使用R通过变量重命名列?

来自分类Dev

使用assign()循环R中的重命名变量

来自分类Dev

如何在重命名功能(c ++)中使用变量?

Related 相关文章

  1. 1

    使用dplyr重命名列

  2. 2

    重命名dplyr中数据框的所有列,而无需使用rename()

  3. 3

    使用C函数rename()重命名文件

  4. 4

    使用dplyr重命名重命名多列(across(

  5. 5

    使用dplyr编程:使用粘合语法用变量重命名列

  6. 6

    无法使用dplyr重命名列

  7. 7

    R:使用 dplyr 重命名因子的级别

  8. 8

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

  9. 9

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

  10. 10

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

  11. 11

    使用Jython在循环中重命名变量

  12. 12

    使用函数重命名字符变量

  13. 13

    R使用rename_with()使用通配符重命名多列

  14. 14

    使用os.rename重命名文件导致NameError

  15. 15

    使用.rename和.endswith重命名多个图像

  16. 16

    使用unlink()和rename()删除和重命名文件

  17. 17

    使用tidyselect函数使用dplyr重命名列名

  18. 18

    动态重命名变量

  19. 19

    使用dplyr通过函数式编程重命名列

  20. 20

    使用带有dplyr的数据框名称动态重命名

  21. 21

    使用dplyr通过函数式编程重命名列

  22. 22

    在 dplyr 中使用重命名和汇总时出错

  23. 23

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

  24. 24

    JS:重命名变量以进行重构(使用AST而不是文本)

  25. 25

    使用gofmt重构工具重命名全局变量

  26. 26

    使用do循环对Sas重命名变量,如果满足条件

  27. 27

    如何使用R通过变量重命名列?

  28. 28

    使用assign()循环R中的重命名变量

  29. 29

    如何在重命名功能(c ++)中使用变量?

热门标签

归档