colnames(df [1,])将数字而不是第1行作为colname

时间:2016-02-10 23:31:11

标签: r

我有一个数据框df。当我打印第一行时,我得到了

> print(df[1,])
V2         V3         V4         V5        
A          B          C          D

我想要A,B等作为名字,所以我做

colnames(df) <- df[1,]

然而,当我打印我现在得到的名字时

> print(colnames(df))
[1] "1101" "852"  "782"  "534" 

        V2          V3         V4        
        A           B          C  
col1    48.6        2          0.2           
col2    68.7        3.4        0.3               
col3    34.2        2.7        0.5        

我应该如何设置colnames?

1 个答案:

答案 0 :(得分:1)

由于Gregor和nicola已经选择了你的列似乎是因素而colnames()需要一个矢量输入而不是数据帧,请尝试以下方法:

colnames(df) <- as.vector(t(df[1,]))

t()将向量转换为单个列矩阵,as.vector()然后删除第二个维度。

示例:

df <- data.frame(x1 = factor("a"),x2 = factor("b"),x3 = factor("c"),x4 = factor("d"))
colnames(df) <- as.vector(t(df[1,]))
df <- df[-1,] # removes the first row