首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >一种更有效的解析嵌套列表元素的方法

一种更有效的解析嵌套列表元素的方法
EN

Stack Overflow用户
提问于 2014-07-12 07:10:49
回答 1查看 296关注 0票数 1

我正在开发解析嵌套列表的函数。。不幸的是,由于原始数据的性质,我实在想不出该怎么做。函数中的最后三段代码让我有点害怕,但它们确实完成了任务。下面是它们:

代码语言:javascript
复制
mkList <- lapply(rec, function(x){
      lapply(regex, function(y) grep(y, x, value = TRUE)) })
rem <- lapply(mkList, function(x){
      lapply(x, function(y) sub("[a-z]+,", "", y)) })
lapply(rem, read.as.csv)

是的,您正确地看到了,这是对lapply的连续5次调用。是的,你猜到了,read.as.csv也叫lapply

要制作一个可重复的小示例,请考虑嵌套列表x和下一个“双”lapply块。结果正是我想要的,但我很好奇

是否有更好、更有效的方法将函数应用于嵌套列表的内部列表?

内部列表元素是不同字符串长度的csv向量。

代码语言:javascript
复制
> ( x <- list(list(a = c("a,b,c", "d,e,f"), 
                   b = c("1,2,a,b,c,d", "3,4,e,f,g,h"))) )

# [[1]]
# [[1]]$a
# [1] "a,b,c" "d,e,f"
#
# [[1]]$b
# [1] "1,2,a,b,c,d" "3,4,e,f,g,h"

> lapply(x, function(y){
      lapply(y, function(z) do.call(rbind, strsplit(z, ",")))
  })

# [[1]]
# [[1]]$a
#      [,1] [,2] [,3]
# [1,] "a"  "b"  "c" 
# [2,] "d"  "e"  "f" 
# 
# [[1]]$b
#      [,1] [,2] [,3] [,4] [,5] [,6]
# [1,] "1"  "2"  "a"  "b"  "c"  "d" 
# [2,] "3"  "4"  "e"  "f"  "g"  "h" 
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-12 07:27:29

*apply家族中知名度较低的函数之一是rapply--用于“递归lapply”。看上去你是在尝试:

代码语言:javascript
复制
rapply(x, function(y) do.call(rbind, strsplit(y, ",", TRUE)), how = "replace")
# [[1]]
# [[1]]$a
#      [,1] [,2] [,3]
# [1,] "a"  "b"  "c" 
# [2,] "d"  "e"  "f" 
# 
# [[1]]$b
#      [,1] [,2] [,3] [,4] [,5] [,6]
# [1,] "1"  "2"  "a"  "b"  "c"  "d" 
# [2,] "3"  "4"  "e"  "f"  "g"  "h" 

对于这个特殊的例子,它是您的方法后面的一个阴影,但是随着您扩展这个示例,它被证明是更有效的。

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

https://stackoverflow.com/questions/24710588

复制
相关文章

相似问题

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