R将列转换为NA值 - 为什么?

ald*_*ado 2 file-io r tab-delimited na

我想在制表符分隔文件中读取一列,表示由"罗马"枚举表示的类(每个文件在第二列中包含i,ii,iii或iv).但是,对于仅包含"i"的文件,此列将转换为NA值.我可以使用如下所示的小测试文件重现此错误:

animal  class   info
dog i   a
cat i   a
rabbit  i   b
Run Code Online (Sandbox Code Playgroud)

当我把它读到R:

> d<-read.delim("test_roman.csv", sep="\t")
> d
  animal class info
1    dog    NA    a
2    cat    NA    a
3 rabbit    NA    b
Run Code Online (Sandbox Code Playgroud)

我在这里错过了什么?read.delim总是在类似的文件上为我工作.

mar*_*tin 5

你可能已经发现你是否可视化了这种类型:

typeof(d$class)
[1] "complex"
Run Code Online (Sandbox Code Playgroud)

你显然不希望有一个复杂的数字,所以我们强制执行"character"类:

read.table("test_roman.csv", sep="\t", fill=T, colClasses="character", header=T)
# animal  class   info
# dog     i       a
# cat     i       a
# rabbit  i       b
Run Code Online (Sandbox Code Playgroud)

如果您的文件不仅包含i,还包含iiiv,它仍可以使用:

read.delim("test_roman2.csv", sep="\t")
#   animal class info
#1     dog     i    a
#2     cat     i    a
#3 rabbit      i    b
#4 rabbit     iv    b
#5 rabbit     ii    b
Run Code Online (Sandbox Code Playgroud)