将数据文件读入R时,我可以使用data.frame
包以data.table
或data.table
的形式阅读。我希望将来使用data.table
,因为它更好地处理大数据。但是,这两种方法都存在问题(数据框架为read.table
,data.tables为fread
),我想知道是否有简单的修复方法。
当我使用read.table
生成data.frame
时,如果我的列名称包含冒号或空格,则它们会被句号替换,我不想要。我希望在"中读取列名称。"
或者,当我使用fread
生成data.table
时,根本不会读取我的列名,这显然是不可取的。
请查看以下要点,以获得可重复的示例:
https://gist.github.com/jeffbruce/b966d41eedc2662bbd4a
干杯
答案 0 :(得分:9)
这是一个可行的解决方案。我不确定它是否是最短的解决方案,或者您可以通过在数据表中巧妙地使用drop
来实现,但下面的黑客确实有效。 “问题”是文件中的行号。
首先读入头文件,然后在
之后将其添加到数据表中header <- read.table("yourfile.csv", header = TRUE, nrow = 1)
indata <- fread("yourfile.csv", skip=1, header=FALSE)
setnames(indata, colnames(header))
答案 1 :(得分:6)
R总是尝试转换列名以确保它们是有效的变量名,因此它会添加句点来代替空格和冒号。如果您不想要,可以在使用check.names=FALSE
read.table
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
保持不变。