循环完全加入 R / dplyr
Loop full joins in R / dplyr
我正在尝试构建一个 for 循环,它将在 dplyr 中执行一系列完全连接。
我想加快速度:
join1 <- full_join(Q1_output, Q2_output)
join2 <- full_join(join1, Q3_output)
join3 <- full_join(join2, Q4_output)
join4 <- full_join(join3, Q5_output)
join5 <- full_join(join4, Q6_output)
join6 <- full_join(join5, Q7_output)
join7 <- full_join(join6, Q8_output)
join8 <- full_join(join7, Q9_output)
输出文件的数量并不总是等于 9,但它们总是采用 Qn_output 格式,其中 n 对于给定的一系列分析会发生变化。
有没有办法构造一个函数来执行此操作?输出文件将始终是数据帧并且将始终加入一个公共变量。对于是否可以构造一个类似的循环以获取 N 列数据帧并将其转换为 N 个向量(e.x。重复 Q1 <- data$Q1,Q2 <- data$Q2)的任何反馈,我也将不胜感激。
谢谢!
我们可以使用 mget
到 return list
中的值
lst <- mget(paste0("Q", 1:9, "_output")
然后 reduce
通过执行 full_join
将其添加到单个数据集
library(tidyverse)
reduce(lst, full_join, by = 'variable')
我正在尝试构建一个 for 循环,它将在 dplyr 中执行一系列完全连接。
我想加快速度:
join1 <- full_join(Q1_output, Q2_output)
join2 <- full_join(join1, Q3_output)
join3 <- full_join(join2, Q4_output)
join4 <- full_join(join3, Q5_output)
join5 <- full_join(join4, Q6_output)
join6 <- full_join(join5, Q7_output)
join7 <- full_join(join6, Q8_output)
join8 <- full_join(join7, Q9_output)
输出文件的数量并不总是等于 9,但它们总是采用 Qn_output 格式,其中 n 对于给定的一系列分析会发生变化。
有没有办法构造一个函数来执行此操作?输出文件将始终是数据帧并且将始终加入一个公共变量。对于是否可以构造一个类似的循环以获取 N 列数据帧并将其转换为 N 个向量(e.x。重复 Q1 <- data$Q1,Q2 <- data$Q2)的任何反馈,我也将不胜感激。
谢谢!
我们可以使用 mget
到 return list
lst <- mget(paste0("Q", 1:9, "_output")
然后 reduce
通过执行 full_join
library(tidyverse)
reduce(lst, full_join, by = 'variable')