首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从R中的data.frames列表中提取?

从R中的data.frames列表中提取?
EN

Stack Overflow用户
提问于 2019-10-16 19:09:47
回答 1查看 56关注 0票数 0

我有一个data.frames列表,名为G

在基本R中,我想知道如何在dintBB中分别提取元素AABB,它们的data.frame冒号包含shortdel1del2 (参见下面我的E 110期望的输出E 211)?

代码语言:javascript
复制
G <- list(AA = list(short = data.frame(dint = 5:7, SD = 0:2), short..2 = NULL, del1 = data.frame(dint = 1:3, SD = 2:4), 
               del1..2 = NULL, del2 = NULL), 

          BB = list(short = data.frame(dint = 1:4, SD = 2:5), short..2 = NULL, del1 = 
                 data.frame(dint = 5:6, SD = 3:4), del1..2 = NULL, del2 = data.frame(dint = 6, SD = 1)) )

我想要的输出是:

代码语言:javascript
复制
# dints:
dints = list(
short = list(AA = c(short = 5:7), BB = c(short = 1:4)),
 del1 = list(AA = c(del1 = 1:3), BB = c(del1 = 5:6)),
 del2 = list(AA = c(del2 = NULL), BB = c(del2 = 6)))


# SDs:
SDs = list(
short = list(AA = c(short = 0:2), BB = c(short = 2:5)),
 del1 = list(AA = c(del1 = 2:4), BB = c(del1 = 3:4)),
 del2 = list(AA = c(del2 = NULL), BB = c(del2 = 1)))
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-16 19:45:52

我认为这个函数应该提取你需要的东西。

代码语言:javascript
复制
foo <- function(G, val="dint", cols = c("short", "del1", "del2")) {
  named <- function(x, n) {if (is.null(x)) x else setNames(list(x), n)}  
  Map(function(col) Map(function(n) named(G[[n]][[col]][[val]], col), names(G)), cols)
}

dints <- foo(G, "dint")
SDs <- foo(G, "SD")

我使用的是列表而不是命名向量来表示最内部的值。不确定删除..2值的逻辑是什么,所以我只是做了一个参数来指定要提取哪个子值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58420181

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档