将特征名称中的所有下划线替换为空格。

6
我想用空格替换数据框特征名称中的所有下划线:
library(tidyverse)
names <- c("a_nice_day", "quick_brown_fox", "blah_ha_ha")
example_df <- data.frame(
  x = 1:3,
  y = LETTERS[1:3],
  z = 4:6
)
names(example_df) <- names

尝试过:

example_df %>% rename_all(replace = c("_" = " "))
Error: `.funs` must specify a renaming function

我也尝试了以下方法:

example_df %>% rename_all(funs(replace = c("_" = " ")))
Error: `nm` must be `NULL` or a character vector the same length as `x`

如何将特征名称中的所有下划线替换为空格?


你想让列名包含空格吗?这通常是处理数据的一个非常糟糕的想法。当使用 mutate() 等函数时,必须引用列名,这会使数据变得更加混乱。你确定需要这样做吗? - MrFlick
名称不允许包含空格。请参阅R中的变量名称限制 - G5W
@MrFlick 我明白,但对于这个特定的用例,它是为了传递给 ggplot 并利用 str_wrap 使列标签可读 :) - Doug Fir
@DougFir 嗯,既然这是一个ggplot问题,你可能应该从那段代码开始。更改ggplot对象的比例可能比改变数据本身更容易。 - MrFlick
@MrFlick 感谢您的提示。为了更多的上下文,我正在使用 group by 和很多汇总函数(如 sum、count 等)的 dplyr 链。这些新创建的特征都用下划线代替空格。然后,我将此 df 传递给 ggplot,并使用 facet grid,因此在 facet grid 生成的所有小图中,我在函数中创建的名称看起来太挤了。因此,我打算在将 "_" 替换为 " " 后在 df 特征名称上使用 str_wrp()。这里有更标准的方法吗? - Doug Fir
通常,外观的标签是使用列中的值标记的,而不是实际的列名。您也在调整数据吗?似乎您可能会遗漏其他内容,否则我看不出这是如何可能的。提供一个演示此特定问题的示例将更加清晰明了。 - MrFlick
2个回答

10

怎么样:

example_df %>% select_all(funs(gsub("_", " ", .)))

输出:

  a nice day quick brown fox blah ha ha
1          1               A          4
2          2               B          5
3          3               C          6

你也可以使用rename,但在这种情况下,你需要以不同的方式调用它:

example_df %>% rename_all(function(x) gsub("_", " ", x))

或者简单地说:

example_df %>% rename_all(~ gsub("_", " ", .))

4

使用基本的R:

colnames(example_df) <- gsub("_", " ", colnames(example_df))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接