R中的fread data.table不读入列名
在将数据文件读入R时,可以使用data.table
包将其作为data.frame
或data.table
data.table
。 由于更好地处理大数据,我宁愿将来使用data.table
。 但是,这两种方法都有问题(data.frames为read.table
,data.tables为fread
),我想知道是否有简单的修复方法。
当我使用read.table
生成一个data.frame
,如果我的列名包含冒号或空格,它们会被句点替换,而我不想。 我希望列名按“原样”读取。
或者,当我使用fread
生成data.table
,我的列名根本不被读入,这显然是不希望的。
请查看下面的重要示例:
https://gist.github.com/jeffbruce/b966d41eedc2662bbd4a
干杯
R总是尝试转换列名以确保它们是有效的变量名,因此它会添加句点来代替空格和冒号。 如果您不希望在使用read.table
使用check.names=FALSE
df1<-read.table("data.txt",check.names = FALSE)
sample(colnames(df1),10)
[1] "simple lobule white matter"
[2] "anterior lobule white matter"
[3] "hippocampus"
[4] "lateral olfactory tract"
[5] "lobules 1-2: lingula and central lobule (ventral)"
[6] "Medial parietal association cortex"
[7] "Primary somatosensory cortex: trunk region"
[8] "midbrain"
[9] "Secondary auditory cortex: ventral area"
[10] "Primary somatosensory cortex: forelimb region"
你可以看到, colnames
保持原样。
这是一个可能工作的解决方案。 我不知道这是否是最短的解决方案,也可以通过巧妙的利用做drop
在数据表中,但下面的破解确实工作。 “问题”是文件中的行号。
首先读入头文件,然后将其添加到数据表中
header <- read.table("yourfile.csv", header = TRUE, nrow = 1)
indata <- fread("yourfile.csv", skip=1, header=FALSE)
setnames(indata, colnames(header))
链接地址: http://www.djcxy.com/p/24791.html
上一篇: fread data.table in R doesn't read in column names
下一篇: Calculating percentages of a factor variable with dplyr