R语言 替换列名中的字符

b1payxdu  于 12个月前  发布在  其他
关注(0)|答案(3)|浏览(203)

我的数据框包含带点的标题,我想用下划线替换。
示例数据:

myheaders = c("3.1","3.2","3.3","3.4","3.5","3.6")
mydata = c(2,0,3,1,1,4)
example = as.data.frame(t(mydata))
colnames(example) <- myheaders
example

> example
  3.1 3.2 3.3 3.4 3.5 3.6
1   2   0   3   1   1   4

字符串
a similar question之后,我尝试了以下操作:

myoutput <- data.frame(lapply(example, function(x) {gsub(".", "_", x, fixed = TRUE)}))


然而,这只是将“X”引入到标题中。错误在哪里?

> myoutput
  X3.1 X3.2 X3.3 X3.4 X3.5 X3.6
1    2    0    3    1    1    4


这是我想要的输出:

> myoutput
   3_1  3_2  3_3  3_4  3_5   3_6
1    2    0    3    1    1    4

i7uq4tfw

i7uq4tfw1#

你想改变列名,所以应该使用colnames,否则你将把函数应用到你的data.frame(不包括列(或行)名)。

colnames(example) <- gsub(".", "_", colnames(example), fixed = TRUE)
#   3_1 3_2 3_3 3_4 3_5 3_6
# 1   2   0   3   1   1   4

字符串

kq4fsx7k

kq4fsx7k2#

使用names(),这应该可以做到:

names(example) <- gsub("\\.", "_", names(example))
example
#>   3_1 3_2 3_3 3_4 3_5 3_6
#> 1   2   0   3   1   1   4

字符串

cpjpxq1n

cpjpxq1n3#

new_colnames <- gsub("\\.", "_", colnames(example))
colnames(example) <- new_colnames

example
#   3_1 3_2 3_3 3_4 3_5 3_6
# 1   2   0   3   1   1   4

字符串
gsub可以完成你所需要的(你可以通过使用\来转义点来替换固定参数),但是它会改变列名向量中的字符串。然后像你在例子中使用colnames()函数一样改变列名。

相关问题