我想知道为什么列名在R
中发生变化。我的数据框df
看起来像
2 1 2 2 2 2 2
1 PARK7 10.306062 9.896181 9.735218 9.954633 7.860466 10.258330 10.335949
2 GUK1 8.065012 8.749869 7.446256 7.714932 9.031494 7.472488 8.867279
3 RPS7 8.850187 9.618386 7.877744 9.139807 9.671187 9.627716 9.775775
4 MSN 9.358871 9.906740 9.636625 9.013183 9.229059 9.376560 9.327103
5 CSRP1 10.751795 9.939579 10.611670 9.225930 9.753050 10.634176 10.346735
我尝试通过
将第一列更改为行名names <- df[,-1]
rownames(names) <- df[,1]
但它改变了列名,输出就像
2 1 2.1 2.2 2.3 2.4 2.5
PARK7 10.306062 9.896181 9.735218 9.954633 7.860466 10.258330 10.335949
GUK1 8.065012 8.749869 7.446256 7.714932 9.031494 7.472488 8.867279
RPS7 8.850187 9.618386 7.877744 9.139807 9.671187 9.627716 9.775775
MSN 9.358871 9.906740 9.636625 9.013183 9.229059 9.376560 9.327103
CSRP1 10.751795 9.939579 10.611670 9.225930 9.753050 10.634176 10.346735
为什么列名称会更改,以及如何保留原始列名称。
答案 0 :(得分:0)
默认情况下,data.frame
中的重复列名称不是首选,因为它可能会导致在按名称调用列时出现混淆。它使用make.unique
将列名更改为唯一。为了说明这一点
v1 <- make.unique(as.character(c(2, 1, 2, 2, 2, 2, 2)))
v1
#[1] "2" "1" "2.1" "2.2" "2.3" "2.4" "2.5"
我们可以使用sub
删除子字符串
sub("\\..*", "", v1)
#[1] "2" "1" "2" "2" "2" "2" "2"
使用“MetaQC”中的数据集
library(MetaQC)
data(brain)
df <- brain[[1]][1:4, 1:4]
is.matrix(df)
#[1] TRUE
rownames(df) <- NULL
df
# 2 1 2 2
#[1,] 10.306062 9.896181 9.735218 9.954633
#[2,] 8.065012 8.749869 7.446256 7.714932
#[3,] 8.850187 9.618386 7.877744 9.139807
#[4,] 9.358871 9.906740 9.636625 9.013183