【发布时间】:2019-10-21 11:19:47
【问题描述】:
我正在尝试根据另一个数据帧中包含的字符串对列表中包含的多个数据帧进行子集化。
list.df <- list(
df.1 = data.frame(LM = c(1:10), LS = c(1:10), PL = c(1:10)),
df.2 = data.frame(XY = c(1:10), FE = c(4:13), OI = c(1:10)),
df.3 = data.frame(IL = c(1:10), KU = c(9:18), TS = c(1:10)))
df.4 <- data.frame(df.1 = c("LM", "PL", NA), df.2 = c("FE", NA, NA),
df.3 = c("IL", "KU", "TS"))
我希望我的所有数据框最终看起来像这样:
df.1_sub <- subset(list.df[["df.1"]], select =
colnames(list.df[["df.1"]]) %in% df.4$df.1)
我将不得不为大约 50 个数据集执行此操作,并且想知道是否有一种方法可以编写一个循环来一次对所有数据集执行此操作。
我尝试过使用 lapply 和 for 循环,但到目前为止都没有成功。我是在 R 中使用列表的新手,不胜感激! 这是我第一次在堆栈溢出上发帖,如果我的帖子不合适,请告诉我,
【问题讨论】:
-
澄清一下,如果您创建了
df.2_sub,它只是FE列,对吗?df.3_sub将是一个 10x3 的数据框,由IL、KU和TS列组成? -
是的,没错!