在read.csv中指定colClasses

我试图在R中的read.csv函数中指定colClasses选项。在我的数据中,第一列“time”基本上是一个字符vector,而其余的列是数字。

 data <- read.csv("test.csv", comment.char="" , colClasses=c(time="character", "numeric"), strip.white=FALSE) 

在上面的命令中,我希望R在“时间”列中读取“字符”,其余的为数字。 尽pipe“data”variables在命令完成后确实得到了正确的结果,但R返回了以下警告。 我想知道如何解决这些警告?

 Warning messages: 1: In read.table(file = file, header = header, sep = sep, quote = quote, : not all columns named in 'colClasses' exist 2: In tmp[i[i > 0L]] <- colClasses : number of items to replace is not a multiple of replacement length 

德里克

colClasses向量必须具有等于导入列数的长度。 假设其余的数据集列是5:

 colClasses=c("character",rep("numeric",5)) 

您只能为一列指定colClasse。

所以在你的例子中你应该使用:

 data <- read.csv('test.csv', colClasses=c("time"="character")) 

假设你的“时间”列至less有一个非数字字符的观察值,而其他所有列只有数字,那么'read.csv的默认值是'时间'作为'因子'读入,其余的列为“数字”。 因此,设置'stringsAsFactors = F'将具有与手动设置'colClasses'相同的结果,

 data <- read.csv('test.csv', stringsAsFactors=F) 

如果你想引用标题中的名字而不是列号,你可以使用像这样的东西:

 fname <- "test.csv" headset <- read.csv(fname, header = TRUE, nrows = 10) classes <- sapply(headset, class) classes[names(classes) %in% c("time")] <- "character" dataset <- read.csv(fname, header = TRUE, colClasses = classes) 

对于没有标题和很多列的多个date时间列,说我的date时间字段在列36和38,我希望他们读入作为字符字段:

 data<-read.csv("test.csv", head=FALSE, colClasses=c("V36"="character","V38"="character"))