我正在寻求嵌套乐器的高效替代方案,我认为在R社区中不使用嵌套结构。任何人都可以提出可能的想法或方法来避免在自定义函数中使用嵌套lapply?如何避免在R中使用嵌套lapply?
这里是快速重复的例子:
模拟数据,我用lapply嵌套的,但要避免这种
a <- data.frame(
start=seq(1, by=9, len=18), stop=seq(6, by=9, len=18),
ID=letters[seq(1:18)], score=sample(1:25, 18, replace = FALSE))
b <- data.frame(
start=seq(2, by=11, len=20), stop=seq(8, by=11, len=20),
ID=letters[seq(1:20)], score=sample(1:25, 20, replace = FALSE))
c <- data.frame(
start=seq(4, by=11, len=25), stop=seq(9, by=11, len=25),
ID=letters[seq(1:25)], score=sample(1:25, 25, replace = FALSE))
功能:
a.big <- a[a$score >10,]
a.sml <- a[(a$score > 6 & a$score <= 10),]
a.non <- a[a$score < 6,]
a_new <- list('big'=a.big, 'sml'=a.sml)
tar.list <- list(b,c)
test <- lapply(a_new, function(ele_) {
re <- lapply(tar.list, function(li) {
out <- base::setdiff(ele_, li)
return(out)
})
})
目标:
避免使用嵌套乐器,找到其有效的选择。我的意思是找到更好的代表性输出,它必须易于/快速重现,并且允许快速/简单的下游计算。有没有一般的方法来做到这一点?
如何避免在test
中使用嵌套乐器?任何人都可以提出可能的想法来解决这个问题吗?由于
最好的问候:
杰夫
您是否尝试在新的R会话中运行您的示例代码?你也应该描述你正在尝试做什么,而不是粘贴代码。 – hrbrmstr
@hrbrmstr:是的,我试过了,但如果我在自定义函数中使用嵌套lapply,它会返回一些我不期望的东西。上面的代码是基于我的函数结果模拟的。我正在寻求替代处理大数据框架对象的嵌套结构的一般策略。避免这个问题的一般方法是什么? – user88911
@Jimbou:我可以接受除列表类对象之外的所有可能的输出。你能否在这里详细说明你的可能方法? – user88911