在 R [重复] 读取的数据文件中分配列名
Posted
技术标签:
【中文标题】在 R [重复] 读取的数据文件中分配列名【英文标题】:Assigning column names in a data file read by R [duplicate] 【发布时间】:2016-12-07 06:07:45 【问题描述】:我正在尝试在 R 中读取网络数据(ID 图)。该文件名为“network.txt”,数据如下:
4 0
5 0
6 0
7 0
8 0
9 0
4029 1
4030 1
4031 1
4032 1
4033 1
19088 9040
19089 9040
19090 9040
19091 9040
19092 9040
19093 9040
19094 9040
19095 9040
19096 9040
19097 9040
而且,我正在使用 read.table() 模块阅读它。
data = read.table("network.txt",sep="\t",header=FALSE)
colnames( data ) <- unlist(c('to', 'from'))
Error in `colnames<-`(`*tmp*`, value = c("to", "from")) :
'names' attribute [2] must be the same length as the vector [1]
那么,如何分配列名?读取原始数据文件有错误吗?
【问题讨论】:
鉴于错误,我怀疑您的数据未正确读取。检查str(data)
。很可能您只需要取出sep
参数,它就可以工作。
@ProcrastinatusMaximus 我会在重复标记之前阅读问题和答案。我认为链接的帖子无法解决问题中的问题,除非您发现它隐藏在链接中的某个地方。
【参考方案1】:
您可以在read.table
函数调用中提供列名,如下所示:
read.table("network.txt", col.names = c("Col1", "Col2"))
或者,您也可以通过与 names
函数的尝试类似的方式执行此操作:
test1 <- read.table("Question1.txt")
names(test1) <- c("col1", "col2")
【讨论】:
【参考方案2】:我们只需要
colnames( data ) <- c('to', 'from')
因为c('to', 'from')
返回一个vector
而unlist
在这里什么也不做。 unlist
用于输出为list
或(data.frame
这也是list
的元素等于length
aka columns
)的情况
关于错误,可能是我们使用了错误的sep
,导致单个列可以通过检查str(data)
来识别。我会使用sep=""
除了以上推荐,我们还可以在read.table
中指定col.names
data <- read.table("network.txt",sep="",header=FALSE, col.names = c("to", "from"))
或者使用data.table
中的fread
(它会自动选择分隔符)
library(data.table)
data <- fread("network.txt", header=FALSE, col.names = c("to", "from"))
【讨论】:
谢谢@akrun,我是 R 的初学者。而且,我认为从使用真实数据开始是一个好主意。现在效果很好。以上是关于在 R [重复] 读取的数据文件中分配列名的主要内容,如果未能解决你的问题,请参考以下文章