【问题标题】:get element number from list从列表中获取元素编号
【发布时间】:2018-06-20 11:40:54
【问题描述】:

我有一个清单。每个元素都是一堆要处理的文本。将清单视为一本书。每个元素都是一个页面。

该过程的最终输出是一个数据框,其中包含每个列表元素的正则表达式的一些结果。

我想要添加到每一行的元素的数量。注意空元素消失了。我创建了一个虚拟函数来说明(实际过程更复杂)

mylist <- list("some text here 234","","more text here 23 ","adding a bunch of words 98") 

getnumber <- function(text) {
  str_extract_all(text,pattern = "[0-9]+") 
  }

lapply(mylist,getnumber) %>%  unlist() %>%
  data.frame(stringsAsFactors = FALSE)


    .
1 234
2  23
3  98

期望的输出

    .  element
1 234     1
2         2
3 23      3
4 98      4

【问题讨论】:

  • 为什么不只是str_extract_all(unlist(mylist), "[0-9]+", simplify = TRUE)?附带说明一下,绝对不需要在矢量化函数上运行循环。
  • 你完全正确@DavidArenburg,我应该首先注意到这一点。编辑了我的答案。

标签: r lapply


【解决方案1】:

问题是unlist 只保留list-非空元素。正如@DavidArenburg 正确指出的那样,我们不需要lapply

data.frame(
  . = str_extract_all(unlist(mylist), "[0-9]+", simplify = TRUE),
  element = 1:length(mylist),
  stringsAsFactors = FALSE
)

输出:

    . element
1 234       1
2           2
3  23       3
4  98       4

【讨论】:

  • 你们都忽略了提供的函数是一个虚拟函数这一点。有时每页有不止一个行/列表元素。关键是获取页码而不是其他问题
猜你喜欢
  • 2018-03-06
  • 2012-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-10
  • 2014-12-16
相关资源
最近更新 更多