2014-03-28 25 views
2

假设创建一个数据帧的头我有一个数据帧:从第一行中的数据帧

a <- data.frame(a=c("f", 2, 3), b=c("g", 3, 7), c=c("h", 2, 4)) 

,我想从第一行创建列名。我的猜测是:

names(a) <- a[1,] 

这给:

names(a) 
[1] "3" "3" "3" 

我没有完全得到发生了什么。任何人都可以解释并帮助我如何以正确的方式做到这一点?

+0

不知道为什么..但你可以换一个'[1]''在不公开() ' – rawr

+2

为什么你有这个data.frame?看起来像是数据导入/创建过程中应该解决的问题。 – Roland

+0

@Roland我输入一个包含因子和数值数据的csv。因此我不能使用矩阵......如果这是你的意思。 – joaoal

回答

1

的是与具有不同电平的每一列因素的列。 R将他们投入整数。因为,每一列的字母出现持续的字母数字就被分配值3

尝试

names(a) = as.character(unlist(a[1,])) 
names(a) 
+0

这个答案中的“as.character”是做什么的? – A5C1D2H2I1M1N2O1R2T1

+0

什么都没有!完全没有它! – user3472874

+0

看起来'name()'将因子转换为字符本身 – SeDur

1

尝试这种情况:

> colnames(a) <- unlist(a[1,]) 
> a 
    f g h 
1 f g h 
2 2 3 2 
3 3 7 4 
+0

我不认为“水滴”是必需的,是吗? – A5C1D2H2I1M1N2O1R2T1

+0

你说得对@AnandaMahto,现在是早上8点20分,现在想想R还为时过早,需要一杯咖啡,谢谢你指出了这一点。 –

+2

或8PM对于像我这样的人来说,或许来不及想想R :-) – A5C1D2H2I1M1N2O1R2T1

相关问题