从列表中获取元素编号

时间:2018-06-20 11:40:54

标签: r lapply

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

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

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

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

1 个答案:

答案 0 :(得分: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