首页 > 解决方案 > 如何将特定列表元素解压缩到 R 中的数据框中?

问题描述

一直在研究这个问题,发现只有将列表元素合并到一个大数据框中的解决方案。但是,我正在努力只打开那些满足特定条件的元素。

df1 <- iris %>% filter(Sepal.Length > 2.5)
df2 <- mtcars %>% filter(qsec > 16)
not_neccessary <- head(diamonds, 10)
not_neccessary2 <- head(beaver1, 12)

data_lists <- list("#123 DATA" = df1, "CON" = not_neccessary2, "#432 DATA" = df2, "COM" = not_neccessary) 

我的目标是只转换名称中包含“DATA”的列表元素。我正在考虑在 a 中编写一个循环函数lapply

a <- lapply(data_lists, function(x){if (x == "#+[1-9]+_+DATA"){new_df <- as.data.frame(x)}})

这没用。还试图做一个for循环:

for (i in list){
  if (i == "#+[1-9]+_+DATA"){
    df <- i
  }
}

它也不起作用。

是否有任何有效的功能可以在特定条件下将我的列表解压缩到特定的数据帧中?我的 R 技能非常糟糕,尤其是在编写函数方面,尽管我对这门语言并不陌生。对于那个很抱歉。

标签: rlistloopsfor-looplapply

解决方案


使用grepl/grep查找名称中包含“DATA”的列表并将列表子集化。

result <- data_lists[grepl('DATA', names(data_lists))]
#With `grep`
#result <- data_lists[grep('DATA', names(data_lists))]

推荐阅读