提取列表中多个子列表的元素并转换为多个数据框

韵律

您好亲爱的社区,

这篇文章之后

我正在搜索如何从包含多个具有不同名称的子列表列表中创建多个数据框

因此,从一个名为tier.colI的列表中,我想创建一个函数tier2col该函数返回包含子列表的特定元素的多个data.frames(与列表中的子列表一样多)。

我知道如何手动执行此操作:

phones <- data.frame(tier.col$phones$xmin[-1,3], tier.col$phones$xmax[-1,3], tier.col$phones$text[3])

但实际上,“电话”具有多种名称,因此我需要一种更通用的子列表方法:

x <- data.frame(tier.col$x$xmin[-1,3], tier.col$x$xmax[-1,3], tier.col$x$text[3])

该函数将起到以下作用:

tier2col <- function(list.x) {
  for all sublist in my list 
  select tier.col$sublist$xmin[-1,3], tier.col$sublist$xmax[-1,3], tier.col$sublist$text[3]
  and compile them in a dataframe
}

我知道我可以这样称呼所有的xmin&xmax&text: lapply(tier.col[c(1:length(names(tier.col)))], "[", 1) lapply(tier.col[c(1:length(names(tier.col)))], "[", 2) lapply(tier.col[c(1:length(names(tier.col)))], "[", 3)

但是我不知道如何通过这种方式或如何在这种数据结构上使用mapply。

我希望可以进行一些tier.col$c(names(tier.col)$xmin工作,但是显然,这不是正确的方法。

有人可以帮助我以有效的方式进行计算吗?

结构tier.col

List of 17
 $ phones        :List of 3
  ..$ xmin:'data.frame':    2506 obs. of  3 variables:
  .. ..$ num.row: num [1:2506] 11 15 19 23 27 31 35 39 43 47 ...
  .. ..$ object : chr [1:2506] "xmin" "xmin" "xmin" "xmin" ...
  .. ..$ value  : Factor w/ 4466 levels "","  ","  n ",..: 20 20 21 22 23 24 26 27 28 29 ...
  ..$ xmax:'data.frame':    2506 obs. of  3 variables:
  .. ..$ num.row: num [1:2506] 12 16 20 24 28 32 36 40 44 48 ...
  .. ..$ object : chr [1:2506] "xmax" "xmax" "xmax" "xmax" ...
  .. ..$ value  : Factor w/ 4466 levels "","  ","  n ",..: 2414 21 22 23 24 26 27 28 29 30 ...
  ..$ text:'data.frame':    2505 obs. of  3 variables:
  .. ..$ num.row: num [1:2505] 17 21 25 29 33 37 41 45 49 53 ...
  .. ..$ object : chr [1:2505] "text" "text" "text" "text" ...
  .. ..$ value  : Factor w/ 4466 levels "","  ","  n ",..: 11 4397 4434 3697 4025 3697 3832 4127 3992 4397 ...
 $ syll          :List of 3
  ..$ xmin:'data.frame':    1147 obs. of  3 variables:
  .. ..$ num.row: num [1:1147] 10037 10041 10045 10049 10053 ...
  .. ..$ object : chr [1:1147] "xmin" "xmin" "xmin" "xmin" ...
  .. ..$ value  : Factor w/ 4466 levels "","  ","  n ",..: 20 20 21 24 27 30 33 35 37 40 ...
  ..$ xmax:'data.frame':    1147 obs. of  3 variables:
  .. ..$ num.row: num [1:1147] 10038 10042 10046 10050 10054 ...
  .. ..$ object : chr [1:1147] "xmax" "xmax" "xmax" "xmax" ...
  .. ..$ value  : Factor w/ 4466 levels "","  ","  n ",..: 2414 21 24 27 30 33 35 37 40 43 ...
  ..$ text:'data.frame':    1146 obs. of  3 variables:
  .. ..$ num.row: num [1:1146] 10043 10047 10051 10055 10059 ...
  .. ..$ object : chr [1:1146] "text" "text" "text" "text" ...
  .. ..$ value  : Factor w/ 4466 levels "","  ","  n ",..: 11 4431 4028 3879 4430 4442 4405 3783 4159 4327 ...
 $ delivery      :List of 3
  ..$ xmin:'data.frame':    1147 obs. of  3 variables:
  .. ..$ num.row: num [1:1147] 14627 14631 14635 14639 14643 ...
  .. ..$ object : chr [1:1147] "xmin" "xmin" "xmin" "xmin" ...
  .. ..$ value  : Factor w/ 4466 levels "","  ","  n ",..: 20 20 21 24 27 30 33 35 37 40 ...
  ..$ xmax:'data.frame':    1147 obs. of  3 variables:
  .. ..$ num.row: num [1:1147] 14628 14632 14636 14640 14644 ...
  .. ..$ object : chr [1:1147] "xmax" "xmax" "xmax" "xmax" ...
  .. ..$ value  : Factor w/ 4466 levels "","  ","  n ",..: 2414 21 24 27 30 33 35 37 40 43 ...
  ..$ text:'data.frame':    1146 obs. of  3 variables:
  .. ..$ num.row: num [1:1146] 14633 14637 14641 14645 14649 ...
  .. ..$ object : chr [1:1146] "text" "text" "text" "text" ...
  .. ..$ value  : Factor w/ 4466 levels "","  ","  n ",..: 11 2 2 2 2 2 2 2 2 2 ...
 $ link          :List of 3
  ..$ xmin:'data.frame':    807 obs. of  3 variables:
  .. ..$ num.row: num [1:807] 19217 19221 19225 19229 19233 ...
  .. ..$ object : chr [1:807] "xmin" "xmin" "xmin" "xmin" ...
  .. ..$ value  : Factor w/ 4466 levels "","  ","  n ",..: 20 20 21 27 30 34 37 40 45 1642 ...
  ..$ xmax:'data.frame':    807 obs. of  3 variables:
  .. ..$ num.row: num [1:807] 19218 19222 19226 19230 19234 ...
  .. ..$ object : chr [1:807] "xmax" "xmax" "xmax" "xmax" ...
  .. ..$ value  : Factor w/ 4466 levels "","  ","  n ",..: 2414 21 27 30 34 37 40 45 1642 1651 ...
  ..$ text:'data.frame':    806 obs. of  3 variables:
  .. ..$ num.row: num [1:806] 19223 19227 19231 19235 19239 ...
  .. ..$ object : chr [1:806] "text" "text" "text" "text" ...
  .. ..$ value  : Factor w/ 4466 levels "","  ","  n ",..: 11 2 2 4025 2 2 2 4025 2 4025 ...
 $ words         :List of 3
  ..$ xmin:'data.frame':    807 obs. of  3 variables:
  .. ..$ num.row: num [1:807] 22447 22451 22455 22459 22463 ...
  .. ..$ object : chr [1:807] "xmin" "xmin" "xmin" "xmin" ...
  .. ..$ value  : Factor w/ 4466 levels "","  ","  n ",..: 20 20 21 27 30 34 37 40 45 1642 ...
  ..$ xmax:'data.frame':    807 obs. of  3 variables:
  .. ..$ num.row: num [1:807] 22448 22452 22456 22460 22464 ...
  .. ..$ object : chr [1:807] "xmax" "xmax" "xmax" "xmax" ...
  .. ..$ value  : Factor w/ 4466 levels "","  ","  n ",..: 2414 21 27 30 34 37 40 45 1642 1651 ...
  ..$ text:'data.frame':    806 obs. of  3 variables:
  .. ..$ num.row: num [1:806] 22453 22457 22461 22465 22469 ...
  .. ..$ object : chr [1:806] "text" "text" "text" "text" ...
  .. ..$ value  : Factor w/ 4466 levels "","  ","  n ",..: 11 4424 3881 4429 3745 3781 4160 4054 3983 4229 ...

不要犹豫,告诉我们是否有不清楚的地方/遗漏,

非常感谢,

如果您知道如何处理一项(phones),则只需将其概括为一个函数,即可通过lapply以下命令将其运行到整个列表中

process.one <- function(x)
    data.frame(xmin = x$xmin[-1,3], xmax = x$xmax[-1,3], text = x$text[3])

out <- lapply(tier.col, process.one)

此时,out是data.frames的列表。建议您保持这种方式,但是如果您真正想要的是将data.frames添加到环境(例如全局环境)中,则可以使用list2env

list2env(out, envir = .GlobalEnv)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

R purrr从列表中提取多个项目并转换为数据框

将多个数据框列转换为单独的列表元素

在熊猫中拆分列表并转换为数据框

将列表中的多个数据框转换为其自己的唯一语料库对象

从嵌套列表中提取数据,并转换为整洁的数据框

从数据框名称列表中连接多个数据框

R从多个列表中的每个数据框中提取值

从列表中的多个数据框中提取一个点

从单个列表中提取多个数据

将熊猫数据框值组转换为多个列表

在列表中的多个数据框中转换行和列

如何将列表中的多个数据帧转换为 xts 对象

同时合并列表中的多个数据框

Python:在列表中存储多个数据框

列表中多个数据框的摘要统计

如何从多个数据框列中创建单独的列表?

合并不同列表中的多个数据框

跨列表中的多个数据框更改单列

将列表中的单个列表元素转换为包含列表中的多个元素(就地)

在Pandas列中拆分字典/列表并转换为新数据框

熊猫:将数据框中的单行转换为具有多个维度的列表

将包含字典列表的列转换为pandas数据框中的多个列

将多个元素列表转换为数组

将嵌套列表中的元素转换为数据框

将多个数据框中的行名称转换为数据框中的列

将包含多个列表的嵌套数据框转换为可用的数据框/tibble

R-根据数据框名称中的模式来绑定列表中的多个数据框

从单独的值列表中替换多个数据框(在列表中)列名?

使用lapply将单个数据框列转换为数据框列表中的数字