【发布时间】:2026-01-13 02:35:01
【问题描述】:
我想用空格替换数据框特征名称中的所有下划线:
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()等时,必须引用列名变得更加混乱。你确定你需要那个吗? -
名称不允许包含空格。见Variable name restrictions in R
-
@MrFlick 明白了,但对于这个特殊的用例,它用于传递给 ggplot 并使用 str_wrap 以便列标签可读:)
-
@DougFir 好吧,既然这确实是一个 ggplot 问题,您可能应该从该代码开始。改变 ggplot 对象的比例可能比改变数据本身更容易。
-
@MrFlick 感谢您的提示。对于更多上下文,我拥有的是一个使用 group by 的 dplyr 链,然后是相当多的聚合函数 sum、count 等。这些新创建的功能都有下划线来代替空格。然后,我将此 df 传递给 ggplot 并使用构面网格,因此我在函数中创建的名称在构面网格生成的所有图表中看起来都过于拥挤。因此,在将“_”替换为“”之后,我打算在 df 功能名称上使用 str_wrp()。这里有更标准的方法吗?