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