r - 如何在列表中重叠到列表的子元素

标签 r apply lapply

假设我有一个 列表嵌套在列表中 我有一些只适用于向量的函数(比如 stringr 包中的 str_replace )。 函数应该对每个元素都做它的工作 这实际上需要信息,...

问题一:我的问题有具体的解决方案吗?
问题2:有没有通用的解决方案?

应该有一个使用循环的解决方案,但这几乎是优雅的,而且可能非常慢——效率确实在这里发挥了作用。

让我们有一个 示例 :

# let's start easy:
test1 <- list(c("a","d"),c("b","d"),c("c","d"))

# does not work:
str_replace(test1,"d","changed")

# but this does:
lapply(test1,str_replace,"d","changed")

# but what now ?
test2 <- list(c(list("a"),"d"),c("b","d"),c("c","d"))

# does not work! :-(
lapply(test2,str_replace,"d","changed")

最佳答案

这是为此使用 rapply 的方法。请注意 ... 在 rapply 定义中的位置 - 这在 dflt 之后和 how .出于这个原因,我们将参数命名为 str_replace:

rapply(test,str_replace,pattern="d",replacement="changed",how='replace')

[[1]]
[[1]][[1]]
[1] "a"

[[1]][[2]]
[1] "changed"


[[2]]
[1] "b"       "changed"

[[3]]
[1] "c"       "changed"

关于r - 如何在列表中重叠到列表的子元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13544249/

相关文章:

R 返回每行最小列的索引

r - 转换为循环应用

r - 如何按比例填充矩阵?

r - 使用 R 可视化图中的所有短路径

r - 确定两个邮政编码之间的距离(替代 mapdist)

python - 如何使用 pandas apply 代替列表循环?

r - lapply 和 do.call 运行很慢?

linux - 在 linux 中更改路径

r - 如何根据不同的值范围将数据帧拆分为数据帧列表

python - 复制一些行并更改 Pandas 中的一些值