【发布时间】:2019-10-13 09:14:28
【问题描述】:
我正在尝试获取值 0 在通过多个 csv 文件读取的多个二进制矩阵中第一次出现的位置。
我已经使用...得到了 0 的数量
sapply(files_to_use, function(x) sum(x == 0))
使用...读取所有 csv 文件后
reading_in_csv <- list.files(pattern="*.csv")
files_to_use <- lapply(reading_in_csv, read.delim)
我尝试了以下代码,但收到错误“dim(X) must have a positive length”...
find_first_0 <- function(x){which(x = 0)}
apply(files,1,find_first_0)
有人对上述内容有任何见解吗?我正在考虑使用 which() 来获取位置的函数,但我不了解如何一次使用多个矩阵来实现它。
给定示例矩阵...
dimMat <- matrix(0, 1000, 10)
for(i in 1:1000){
dimMat[i, ] <- sample(c(0,1), 10, replace = TRUE, prob = c(.3, .7))
}
print(dimMat)
【问题讨论】:
-
只是你用了apply而不是sapply
-
提供您的
dimMat,您的预期输出是多少?另外,请在for循环之前set.seed(123),以便它可以重现。 -
这里真正的问题是该列表也有 0 暗淡的对象。下面的代码解决了这个问题,并产生了一个无警告的逐行搜索来查找 0 值,并将结果作为向量输出: delete_empty_matrices 0, suppressWarnings(min (其中(y == 0))), NA)})})
标签: r binary-matrix