我有兩個長度相等的大資料幀的長串列。我想將Dataframe1(來自串列1)與Dataframe1(來自串列2)合并,Dataframe2(來自串列1)與Dataframe2(來自串列2)合并等等...
下面是一個最小的可重復的例子和一些嘗試。
#### EXAMPLE
#Create Dataframes
df_1 <- data. frame(c(" Bah"。 NA。 2, 3。 4)。 c("Bug",NA。 5, 6。 NA))
df_2 <- data. frame(c("Blu"。 7。 8, 9, 10)。 c(NA,NA。 NA, 12, 13))
df_3 <- data. frame(c(" Bah"。 NA。 21, 32。 43)。 c("Rgh",NA。 51, 63, NA))
df_4 <- data. frame(c("gar"。 7。 8, 9, 10)。 c("Ghh",NA。 NA, 121, 131))
#創建串列
list1 <- list(df_1,/span>df_2)
list2 <- list(df_3,df_4)
#設定每個資料框架的列名和行名。
colnames(list1[[1]]) < - c("SampleID"。 "Measure1"。 "Measure2", "Measure3", "Measure4")
colnames(list1[[2]]) < - c("SampleID"。 "Measure1"。 "Measure2", "Measure3"。 "Measure4")
colnames(list2[[1]]) < - c("SampleID"。 "Measure1"。 "Measure2", "Measure3"。 "Measure4")
colnames(list2[[2]]) < - c("SampleID"。 "Measure1"。 "Measure2", "Measure3"。 "Measure4")
rownames(list1[[1]]) < - c("1"/span>。 "2")
rownames(list1[[2]]) < - c("1"/span>。 "2")
rownames(list2[[1]]) < - c("1"/span>。 "2")
rownames(list2[[2]]) < - c("1"/span>。 "2")
我想要的輸出是一個與輸入串列相同長度的串列,但每個資料幀按位置合并成一個資料幀。以下是我想要的資料幀和串列的輸出結果,但是吞吐量很低。
#### DESIRED OUTPUT
DesiredOutput_DF1_Format < -合并(list1[[1]]/span>。 list2[[1]]。 all = TRUE。 by = "SampleID")
DesiredOutput_DF2_Format < -合并(list1[[2]] 。 list2[[2]]。 all = TRUE。 by = "SampleID")
DesiredOutput_List < - list(DesiredOutput_DF1_Format,DesiredOutput_DF2_Format)
我如何使用類似應用的方法,以高通量的方式生成我想要的格式的輸出串列?
#### ATTEMPTS
#Attempt1:
attempt1 < - mapply(cbind, list1, list2, simplify=FALSE)
#Attempt2:
我的直覺是使用`lapply`,但我不知道如何讓它同時遍歷兩個串列。
#Attempt3: 成功了,但是輸出串列的順序出現了顛倒。這并不直觀,雖然很容易糾正......。必須有一個更干凈的方法。
output_list <- list()
dataset_iterator <- 1:length(span>List1)
for (x in dataset_iterator) {>
df1 <- data. frame(list1[[x])
df2 <- data. frame(list2[[x])
df_merged <- data. frame(merge(df1, df2,由= "Barcodes"。 all=TRUE))
output_list < -append(output_list。 list(df_merged)。 0)
uj5u.com熱心網友回復:
根據顯示的代碼,我們可能需要Map(或mapply與SIMPLIFY = FALSE)
out < - Map(merge, list1, List2, MoreArgs = list(all = TRUE。 由= "SampleID"))
-用預期輸出進行檢查
> identical(DesiredOutput_List,out)
[1] TRUE
或者使用tidyverse
library(purrr)
library(dplyr)
map2(list1,list2, full_join。 by = "SampleID")
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/332214.html
標籤:
上一篇:橢圓曲線數字簽名應用原理
