在corresp()中声称缺少行和列

时间:2012-07-03 13:12:20

标签: r

所以我是R的新手 - 所以如果我因无知而犯明显的错误,请原谅我。

我正在尝试进行对应分析。我使用read.csv()从Excel导入数据(通过CSV)。我正在使用MASS包中的corresp()。一切正常。

然后我回到CSV文件(从Excel导出)并删除行(我想从分析中排除的样本),然后我重复read.csv()corresp()步骤,但现在我得到以下错误:

Error in corresp.matrix(as.matrix(x), ...) : empty row or column in table
In addition: Warning message:
In corresp.matrix(as.matrix(x), ...) :
  negative or non-integer entries in table

“另外”错误不是问题,并且在使用非整数执行corresp()时总是会弹出。它是第一行是问题的根源,即行/列为空的说法。

我逐行检查了CSV,绝对没有空单元格(A1除外 - 就像在第一个成功的CSV中一样)。事实上,新的CSV(删除了一些行)与corresp()工作正常的文件几乎相同。

如果任何人有解释或可以建议继续进行,那将是一个巨大的帮助。

1 个答案:

答案 0 :(得分:2)

为了从原始.csv文件中删除某些行(或样本),您可以在R中轻松完成,并且由于您已经读过该文件,因此不会出现任何错误。

第一步是阅读原始.csv文件:

# set the header TRUE if you have any header in your .csv file.
data = read.csv(file = "", header = TRUE) 

现在假设您要删除第3行,第5行,第10行和第20行:

data1 = data[-(c(3, 5, 10, 20)),]

然后,您可以轻松地将data.new数据帧用作新数据集。

您应该注意,为了使用corresp(),您应该在数据集中包含整数和非负列。与上面的代码类似,您也可以选择数据集的某些列。例如,为了仅选择数据集的第3,4和6列(假设这些列是唯一的非负整数),您可以说:

data2 = data[,c(3, 4, 5)]

希望它有所帮助。