首页 > 解决方案 > 如何在数据框列表中按列找到 1 的最小位置?

问题描述

我试图在二进制数据帧列表中找到最小位置,即第一个 1 的最左边。我已经使用以下方法逐行获取第一个 1,但是当我尝试对列进行类似操作时,我得到了相同的输出。任何人对可能出现的问题或我应该尝试什么有任何建议吗?

files <- list.files(pattern="*.csv")
file_list <- lapply(files, read.table)

first_1 <- sapply(file_list, function(x) min(which(t(x) == 1, arr.ind = T))) 

标签: r

解决方案


在这里,我们可以通过创建一个逻辑向量来直接获取最小列索引colSums

sapply(file_list, function(x) which(colSums(x == 1) > 0)[1])

数据

file_list <- list(data.frame(col1 = c(5, 3, 1, 2, 3), col2 = c(3, 4, 5, 1, 4)),
            data.frame(col1 = c(5, 3, 2, 2, 1), col2 = c(3, 4, 5, 1, 4)))

推荐阅读