r - 如何在 R 中的多个二进制矩阵中获得第一次出现值 0 的位置?
问题描述
我试图在通过多个 csv 文件读取的多个二进制矩阵中获取值 0 第一次出现的位置。
我得到了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)
解决方案
这很丑陋,但我认为这就是你所追求的:
delete_empty_matrices <- function(matrix_list){
matrix_list[unlist(lapply(matrix_list, length) != 0)]
}
files_to_use <- files_to_use[!(is.na(delete_empty_matrices(files_to_use)))]
sapply(files_to_use, function(x){apply(x, 1, function(y){ifelse(length(y) > 0,
suppressWarnings(min(which(y == 0))), NA)})})
推荐阅读
- python - 使用递归将列表成员转换为整数值
- python - Netmiko (Python):send_command 返回路由器提示而不是命令结果
- mysql - 如何在 SQL 中创建地址变量?
- sql - 访问:如何用字符串中未知位置的 mm/yyyy 替换 mm/dd/yyyy?
- r - 将分类变量重新编码为 R 中的新变量
- php - 如果使用 $_GET,则 PHP 嵌套
- java - Android 地理围栏背景限制
- c - 如何使用非系统提供的 Clang 和 libc 编译 C 程序,例如。肌肉?
- java - 是否可以使用 Spring WebClient 在 GET 请求中包含请求正文?
- window - 如何使 WindowDialog 在 godot 中调整大小?