R:read.csv将字母i导入为NA

Cal*_*arr 4 csv r na

非常简单的问题(我认为).我试图将一个.csv文件导入到R中,通过实验来人们通过按"e"或"i"键来响应.在测试中,我只用"i"键响应,所以数据集中的响应变量基本上是"i"的列表(没有引号).当我尝试将数据导入R时:

noload=read.csv("~/Desktop/eprime check no load.csv", na.strings = "")
Run Code Online (Sandbox Code Playgroud)

响应变量出来所有的NA.当我尝试所有"e",或"e"和"i"的混合时,它工作正常.

什么是关于字母i,使R将其视为NA(即使没有该na.strings = ""部分也是如此)?

在此先感谢您的帮助.

Jas*_*son 6

当您要求R在不指定列的数据类型的情况下读取表时,它将尝试"猜测"数据类型.在这种情况下,它猜测数据类型的"复杂".例如,如果你有datafile.csv内容

Var
i
i
i
Run Code Online (Sandbox Code Playgroud)

你也是:

df = read.csv("datafile.csv", header = TRUE, na.strings = "")
class(df$Var)
Run Code Online (Sandbox Code Playgroud)

你会得到

[1] "complex"
Run Code Online (Sandbox Code Playgroud)

R将i解释为纯虚构的价值.要解决此问题,只需指定数据类型colClass,如下所示:

df = read.csv("datafile.csv", header = TRUE, na.strings = "", colClass = "factor")
Run Code Online (Sandbox Code Playgroud)

或者factor用你想要的任何东西替换.通常最好像这样预先指定数据类型,这样你就不会在以后遇到混乱的错误.

  • 我在前一段时间把它填充为一个bug,并在最新的R版本(v 3.3.0)中修复了这个问题.见[这里](https://stat.ethz.ch/pipermail/r-announce/2016/000602.html) (7认同)