是否有办法使用read.table()
来读取全部或部分文件,使用类函数获取列类型,修改列类型,然后重新读取文件?使用类函数在read.table中指定colClasses
基本上我有零填充整数,我喜欢作为字符串对待列。如果我让read.table()
只是做它的事情,它当然认为这些是数字和剥离前导零,并使列类型的整数。事情是我有相当数量的列,所以虽然我可以创建一个字符向量指定每个我只想改变一个夫妇从最好的猜测是。我希望做的是阅读的头几行:
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'列,并要强制例如,只有第三和第七是字符,可能类似于'col_classes < - rep(NA,N); col_classes [c(3,7)] < - “字符”,然后您将作为colClasses参数传递。从帮助文件中,[Re:colClasses]:“...可能的值是NA(使用type.convert时的默认值)...”' – nrussell