所以我是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()
工作正常的文件几乎相同。
如果任何人有解释或可以建议继续进行,那将是一个巨大的帮助。
答案 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)]
希望它有所帮助。