在 R 中的所有列名中替换多个句点
Substitute multiple periods in all column names in R
我有以下 data.frame.
df = data.frame(a.dfs.56=c(rep("a",8), rep("b",5), rep("c",7), rep("d",10)),
b.fqh.28=rnorm(30, 6, 2),
c.34.2.fgs=rnorm(30, 12, 3.5),
d.tre.19.frn=rnorm(30, 8, 3)
)
如何替换所有句点“.”在列名称中将它们变成破折号“-”?
我知道在使用 read.table
或 data.frame
时有像 check.names=FALSE
这样的选项,但在这种情况下,我不能使用它。
我也试过以下帖子的变体,但它们对我不起作用。
Specifying column names in a data.frame changes spaces to "."
谢谢。
您可以使用 gsub
进行名称替换
names(df) <- gsub(".", "-", names(df), fixed=TRUE)
请注意,您需要 fixed=TRUE
,因为通常 gsub
需要正则表达式,而 .
是一个特殊的正则表达式字符。
但请注意 -
是变量名称的 non-standard 字符。如果您尝试将这些列与使用 non-standard 评估的函数一起使用,则需要将 back-ticks 中的名称括起来才能使用它们。例如
dplyr::filter(df, `a-dfs-56`=="a")
gsub("\.", "-", names(df))
是regex(正则表达式)方式。 .
是正则表达式中的一个特殊符号,表示“匹配任何单个字符”。这就是 MrFlick 的回答中包含 fixed = TRUE
论点的原因。
\
(转义)告诉 R 我们不需要文字句点而不是它所代表的特殊符号。
我有以下 data.frame.
df = data.frame(a.dfs.56=c(rep("a",8), rep("b",5), rep("c",7), rep("d",10)),
b.fqh.28=rnorm(30, 6, 2),
c.34.2.fgs=rnorm(30, 12, 3.5),
d.tre.19.frn=rnorm(30, 8, 3)
)
如何替换所有句点“.”在列名称中将它们变成破折号“-”?
我知道在使用 read.table
或 data.frame
时有像 check.names=FALSE
这样的选项,但在这种情况下,我不能使用它。
我也试过以下帖子的变体,但它们对我不起作用。
Specifying column names in a data.frame changes spaces to "."
谢谢。
您可以使用 gsub
进行名称替换
names(df) <- gsub(".", "-", names(df), fixed=TRUE)
请注意,您需要 fixed=TRUE
,因为通常 gsub
需要正则表达式,而 .
是一个特殊的正则表达式字符。
但请注意 -
是变量名称的 non-standard 字符。如果您尝试将这些列与使用 non-standard 评估的函数一起使用,则需要将 back-ticks 中的名称括起来才能使用它们。例如
dplyr::filter(df, `a-dfs-56`=="a")
gsub("\.", "-", names(df))
是regex(正则表达式)方式。 .
是正则表达式中的一个特殊符号,表示“匹配任何单个字符”。这就是 MrFlick 的回答中包含 fixed = TRUE
论点的原因。
\
(转义)告诉 R 我们不需要文字句点而不是它所代表的特殊符号。