尝试读取csv文件并将一列指定为数值时出错:scan()预期为“实数”,为“ 14.3”

时间:2018-10-09 15:47:13

标签: r

我正在使用运行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   

0 个答案:

没有答案