r - 查找每列数据集列表的唯一级别
问题描述
我有一个包含 18 个数据集的列表,每个数据集都有一些列,我如何编写一个循环来通过列索引查找相交,并返回列索引列表。
df1 <- data.frame(id = c(1:5), loc = c("a","b","c","a","b"))
df2 <- data.frame(id = c(3:7), ta = c("c","b","d","a","b"))
df3 <- data.frame(id = c(1:5), az = c("d","a","e","d","b"))
df <- list(df1, df2, df3)
df <- lapply(df, function(i) lapply(i, function(j) as.character(j)))
intersect(df[[1]][1], df[[2]][1], df[[3]][1])
intersect(df[[1]][2], df[[2]][2], df[[3]][2])
解决方案
tidyverse
,我们可以使用map/reduce
library(purrr)
library(dplyr)
map(df, pull, 1) %>%
reduce(intersect)
#[1] 3 4 5
或者作为一个函数
f1 <- function(lstA, ind) {
map(lstA, pull, ind) %>%
reduce(intersect)
}
f1(df, 1)
#[1] 3 4 5
f1(df, 2)
#[1] "a" "b"
推荐阅读
- mysql - mysql查询,非活跃公司
- c# - System.Web.Helpers 在调试时消失
- javascript - React 在 this.props.children 上设置默认道具
- swift - 字符串文件中的 HTML 实体
- html - 引导导航栏切换按钮单击时向左移动
- javascript - 在不丢失 html 格式的情况下,用 span 将特定单词包装在标题中
- python - 使用python将长字符串存储到MySQL
- go - 从 Golang 正确的 JSON 块输出
- python - 如何在 python numpy 多维数组中获得最短的数组形状?
- spring-integration - Spring Integration DSL 收集流之间的指标