【发布时间】:2015-06-26 16:41:17
【问题描述】:
有没有办法使用read.table()读取里面的全部或部分文件,使用类函数获取列类型,修改列类型,然后重新读取文件?
基本上我的列是零填充整数,我喜欢将其视为字符串。如果我让read.table() 做它的事情,它当然会假设这些是数字并去掉前导零并使列类型为整数。事情是我有相当多的列,所以虽然我可以创建一个字符向量来指定每个列,但我只想从 R 的最佳猜测中更改几个。我想做的是阅读前几行:
myTable <- read.table("//myFile.txt", sep="\t", quote="\"", header=TRUE, stringsAsFactors=FALSE, nrows = 5)
然后获取列类:
colTypes <- sapply(myTable, class)
更改几个列类型,即:
colTypes[1] <- "character"
然后使用修改后的列类型重新读取文件:
myTable <- read.table("//myFile.txt", sep="\t", quote="\"", colClasses=colTypes, header=TRUE, stringsAsFactors=FALSE, nrows = 5)
虽然这似乎是一件非常合理的事情,而且colTypes = c("character") 工作正常,但当我真正尝试它时,我得到了:
scan() expected 'an integer', got '"000001"'
class(colTypes) 和 class(c("character")) 都返回 "character" 那么有什么问题呢?
【问题讨论】:
-
如果您有
N列,并且只想强制第 3 和第 7 为字符,例如,可能类似于col_classes <- rep(NA, N); col_classes[c(3, 7)] <- "character",然后您将其作为colClasses参数传递.在帮助文件中,[Re: colClasses]: "... Possible values are NA (the default, when type.convert is used) ..."
标签: r read.table