r - 如何在数据框列表中按列找到 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)))
解决方案
在这里,我们可以通过创建一个逻辑向量来直接获取最小列索引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)))
推荐阅读
- javascript - react-redux 默认从 store 中选择值
- go - 使用 grpc 流的聊天应用程序
- docker - 如何使用 docker-compose 将多个 docker 镜像推送到 docker hub?
- deep-linking - 无法从 Skype 应用程序打开我的应用程序,但可以在 Messenger 上打开它
- html - 做`context.canvas.width`和`canvas.width`有什么区别?
- mysql - 如何在 SELECT 语句中使用 HAVING 子句?
- python - 如何将数据库包含在 .py 到 .exe 中?
- powershell - 将 PnPFile 从站点移动到个人 onedrive 站点
- javascript - 无法使用带有 Fetch API 获取请求的 foreach 循环从 API 获取多个数据
- javascript - 从 expo 环境调用后 Firestore 返回元数据