这应该是一个容易的问题,但我遇到了麻烦 . 我有一个脏数据集,我无法用 header=T
读取它 . 在我阅读并清理它之后,我想使用现在的第一行数据作为列名 . 我在stackoverflow上尝试了多种方法但没有成功 . 可能是什么问题呢?清理后,数据集 t1
应该如下所示:
V1 V2 V3 V4 V5
1 col1 col2 col3 col4
2 row1 2 4 5 56
3 row2 74 74 3 534
4 row3 865 768 8 7
5 row4 68 86 65 87
我试过了: colnames(t1)=t1[1,]
. 什么都没发生 .
我试过了: names(t1)=ti[1,]
,什么都没发生 .
我试过了: lapply(t1, function(x) {names(x)<-x[1,]; x})
它返回一条错误消息:
[.default(x,1,)中的错误:维度数不正确
有人可以帮忙吗?
5 回答
退一步,当您读取数据时,请使用
read.table
中的skip=1
完全错过第一行 . 当您清理数据时,这应该可以使生活更轻松,特别是对于数据类型 . 这是关键,因为您的问题源于您的数据被编码为因素 .然后,您可以使用
read.table
中的nrows=1
分别读取列名称 .可能数据帧列的数据类型是因子 . 这就是为什么您尝试的代码不起作用的原因,您可以使用
str(df)
进行检查:然后你可以使用你的第一次尝试,然后删除你的第一行,如果你愿意:
如果您的列是因子或字符,它将起作用:
输出:
Test
怎么样:
即具体将行命名为变量?
使用以下代码:
它似乎有用,但也许我错过了什么?
使用data.table: