我正在尝试使用以下代码创建相异矩阵:
BC26bBrayCurtisMatrix<-vegdist(BC2_6b_OTU, method="bray", binary=FALSE, diag=FALSE, upper=FALSE,na.rm = FALSE)
我得到了这个错误:
Error in vegdist(BC2_6b_OTU, method = "bray", binary = FALSE, diag = FALSE, NA/NaN/Inf in foreign function call (arg 1)
我试过了:
is.na(BC2_6b_OTU)
除了表末尾的2列之外,输出将返回所有FALSE。这些在我的BC2_6b_OTU.csv文件中实际上是空的,但是在这个is.na输出之后说'TRUE‘。这会是问题所在吗?如果是,我该如何删除此行?
还有其他建议吗?我是R的新手,我很感谢你的帮助!
发布于 2017-06-09 00:41:47
如果要删除某些列,可以执行以下操作
x <- x[, c(ncol(x), ncol(x)-1)]
或
x <- x[ , !sapply(x, FUN = function(n) any(is.na(n))))
我的猜测是这个.csv是在电子表格程序中创建的?如果是这样,请考虑删除数据集末尾的“空”列,并处理干净的数据集。
这里演示了NAs会导致您的问题。
library(vegan)
data(varespec)
vare.dist <- vegdist(varespec)
varespec$sneakycol1 <- NA
varespec$sneakycol2 <- NA
sneaky.dist <- vegdist(varespec, method = "bray")
https://stackoverflow.com/questions/44441176
复制相似问题