0

我正在使用运行 Windows 7 的工作机器,并且我使用的是 R 版本 3.5.1 (2018-07-02)。这是我在 stackexchange 上的第一篇文章,我不是经验丰富的程序员。

我有一个包含很多列的 .csv 文件,所以我试图只读取几个特定的​​列。当我尝试以数字形式读取某些列时遇到了麻烦。

我有一个解决方法(将所有列指定为字符,然后将我需要的列转换为数字),但我很好奇为什么我的第一种方法不起作用。

如果我使用代码

col_to_read<-rep("NULL",46)
col_to_read[c(11,17,23)]<-"numeric"
col_to_read[2]<-"character"
col_to_read[5]<-"factor"

data<-read.csv("outcome-of-care-measures.csv",colClasses=col_to_read)

我明白了

Error in scan(file = file, what = what, sep = sep, quote = quote, dec = dec,  : 
  scan() expected 'a real', got '"14.3"'

我在 stackexchange 和 google 上寻找过类似的问题,但建议的解决方案对我不起作用。这可能是因为我的错误与其他错误略有不同。通常他们会报告类似

 scan() expected 'a real', got '14.3'

所以这个数字没有额外的引号。

这个数据集中有很多列,而且列名很长,所以很难在记事本中发布数据的样子,但第一行是这样的

"010001","SOUTHEAST ALABAMA MEDICAL CENTER","1108 ROSS CLARK CIRCLE","","","DOTHAN","AL","36301","HOUSTON","3347938701","14.3",

这不是整行数据,我停在 14.3,这是我想指定为数字的第一列。

我尝试了许多 read.csv 和 read.table 排列,其中之一包括设置 dec="," 但我得到了同样的错误。我不住在逗号用于小数的地方。如果我没有为 colClasses 指定任何内容,我希望为数字的字段将默认被读取为因子。

sessionInfo() 的输出是

R version 3.5.1 (2018-07-02)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 7 x64 (build 7601) Service Pack 1

Matrix products: default

locale:
[1] LC_COLLATE=English_United States.1252  LC_CTYPE=English_United States.1252   
[3] LC_MONETARY=English_United States.1252 LC_NUMERIC=C                          
[5] LC_TIME=English_United States.1252    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] swirl_2.4.3

loaded via a namespace (and not attached):
 [1] httr_1.3.1      compiler_3.5.1  magrittr_1.5    R6_2.2.2        tools_3.5.1     RCurl_1.95-4.11
 [7] yaml_2.2.0      stringi_1.1.7   stringr_1.3.1   digest_0.6.17   testthat_2.0.0  rlang_0.2.2    
[13] bitops_1.0-6   
4

0 回答 0