r-根据另一个DF列中的值选择DF

r-根据另一个DF列中的值选择DF,r,dataframe,R,Dataframe,我想绑定两个数据帧的列。 第二个数据帧应该在我的环境中的几个数据帧中选择,具体取决于第一个数据帧中单元格的值 result <- lapply(test$main_activity, function(x) cbind(subset(test, main_activity == x), get(ls(pattern = x, envir = .GlobalEnv)))) result #[[1]] # main_activity p_l_for_per

我想绑定两个数据帧的列。 第二个数据帧应该在我的环境中的几个数据帧中选择,具体取决于第一个数据帧中单元格的值

result <- lapply(test$main_activity, function(x) cbind(subset(test, 
               main_activity == x), get(ls(pattern = x, envir = .GlobalEnv))))

result

#[[1]]
#  main_activity p_l_for_period_net_income_th_eur_2019 Name   V1
#1 Manufacturing                             -4849.968    A 2000

#[[2]]
#  main_activity p_l_for_period_net_income_th_eur_2019 Name   V1
#2      Services                             -4416.404    B 3000
样本数据

test <- structure(list(main_activity = structure(c(1L, 9L), .Label = c("Manufacturing", 
"Manufacturing; Retail", "Manufacturing; Services", "Manufacturing; Wholesale", 
"Manufacturing; Wholesale; Services", "Retail", "Retail; Services", 
"Retail; Wholesale", "Services", "Services; Manufacturing", "Services; Retail", 
"Services; Wholesale", "Wholesale", "Wholesale; Manufacturing", 
"Wholesale; Retail", "Wholesale; Services"), class = "factor"), 
    p_l_for_period_net_income_th_eur_2019 = c(-4849.968, -4416.404
    ), Name = c("A", "B")), class = "data.frame", row.names = c(NA, 
-2L))

Manufacturing_2015 <- as.data.frame(matrix(data = c(2000)))
Services_2015 <- as.data.frame(matrix(data = c(3000)))

test您可以使用
ls
根据数据帧在
main_activity
cbind
中的值,从全局环境中选择一个数据帧,将数据帧绑定到数据帧的原始子集

result <- lapply(test$main_activity, function(x) cbind(subset(test, 
               main_activity == x), get(ls(pattern = x, envir = .GlobalEnv))))

result

#[[1]]
#  main_activity p_l_for_period_net_income_th_eur_2019 Name   V1
#1 Manufacturing                             -4849.968    A 2000

#[[2]]
#  main_activity p_l_for_period_net_income_th_eur_2019 Name   V1
#2      Services                             -4416.404    B 3000
names(result) <- paste0('binded_', test$Name)
list2env(result, .GlobalEnv)