R中的fread data.table不读入列名

在将数据文件读入R时,可以使用data.table包将其作为data.framedata.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