假设我有一个数据帧:
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 :(得分: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)
管理员软件包提供了最干净的方式将任何数据行上移为列名。