17

我正在尝试将一个大的制表符分隔文件读入 R。

首先我尝试了这个:

data <- read.table("data.csv", sep="\t")

但它正在读取一些数值变量作为因素

所以我尝试根据我希望每个变量的类型来读取数据,如下所示:

data <- read.table("data.csv", sep="\t", colClasses=c("character","numeric","numeric","character","boolean","numeric"))

但是当我尝试这个时,它给了我一个错误:

扫描错误(文件,什么,nmax,sep,dec,quote,skip,nlines,na.strings,:scan()预期'a real',得到'“4”'

我认为可能是原始原始文件中的某些数值周围有引号,但我不确定。

4

2 回答 2

8

没有看到你的数据,你有几件事之一:你没有分隔数据的所有选项卡;在单个观察中有嵌入的选项卡;或其他人。

你可以解决这个问题的方法是设置options(stringsAsFactors=FALSE)然后使用你的第一行。

检查str(data)并尝试找出哪些行是罪魁祸首。一些数值被读取为因子的原因是因为该列中有一些东西被 R 解释为一个字符,因此它将整个列强制转换为字符。它通常需要一些挖掘,但问题几乎肯定出在您的输入文件上。

这是一个常见的数据修改问题,祝你好运!

于 2012-07-26T18:46:22.390 回答
1
x <- paste("'",floor(runif(10,0,10)),"'",sep="")
x

 [1] "'7'" "'3'" "'0'" "'3'" "'9'" "'1'" "'4'" "'8'" "'5'" "'8'"

as.numeric(gsub("'", "",x))

 [1] 7 3 0 3 9 1 4 8 5 8
于 2012-07-26T21:37:19.530 回答