2017-06-08 34 views
0

我將嘗試使用下面的代碼做一個相似矩陣:R:NA/NaN的/ INF在外部函數調用(ARG 1)vegdist

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文件中實際上是空白的,但在這個輸出結束後說'TRUE'。這可能是問題嗎?如果是這樣,我該如何刪除這一行?

Photo of R output for is.na

任何其他建議?我是R新手,我很感激幫助!

回答

0

如果你想移除某些列,你可以做

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

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

我的猜測是,此.csv在電子表格程序產生的?如果是這樣,請考慮刪除數據集末尾的「空白」列並使用乾淨集合。

下面是一個演示,可能會導致您的問題。

library(vegan) 

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

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

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

實際上,這除去了最後一列以外的所有東西。我使用的代碼是: BC2_6b_OTU_NA < - BC2_6b_OTU [,c(ncol(BC2_6b_OTU),ncol(BC2_6b_OTU)-1)] –

+0

@LizKimbrough只在col數字前加上減號,它將排除它們。 –

相關問題