从数据框的第一行创建数据框的标头

时间:2014-03-28 13:55:57

标签: r indexing

假设我有一个数据帧:

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"

我没有完全了解正在发生的事情。任何人都可以解释并帮助我以正确的方式做到这一点吗?

3 个答案:

答案 0 :(得分:2)

a的列是每个列具有不同级别的因子。 R将它们投入到整数中。因为,对于每一列,字母最后以字母数字形式出现,因此它被赋值为3。

尝试

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

答案 1 :(得分:1)

试试这个:

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

答案 2 :(得分:1)

janitor::row_to_names(a,1)

管理员软件包提供了最干净的方式将任何数据行上移为列名。