R:vegdist的外来函数调用(arg 1)中的NA / NaN / Inf

时间:2017-06-08 16:32:41

标签: r

我正在尝试使用以下代码制作相异度矩阵:

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”。这可能是问题吗?如果是这样,我该如何删除这一行?

Photo of R output for is.na

还有其他建议吗?我是R的新手,我很感激你的帮助!

1 个答案:

答案 0 :(得分:0)

如果要删除某些列,可以执行

x <- x[, c(ncol(x), ncol(x)-1)]

x <- x[ , !sapply(x, FUN = function(n) any(is.na(n))))

我的猜测是.csv是在电子表格程序中创建的吗?如果是这样,请考虑删除&#34;清空&#34;数据集末尾的列,并处理干净的集合。

以下是NAs可能导致您的问题的演示。

library(vegan)

data(varespec)
vare.dist <- vegdist(varespec)

varespec$sneakycol1 <- NA
varespec$sneakycol2 <- NA

sneaky.dist <- vegdist(varespec, method = "bray")