在 R 中通过引用传递列表并添加到列表

维达勒

我在 R 中有一个函数,它应该通过向列表附加新项目来修改列表。但是,我真的不想复制我的清单。

我知道这在 R 中不是一件容易的事,而且我已经看到了一些使用 eval.parent 函数的最小示例,但我不知道它们将如何应用于我的特定情况。

我的问题的一个最小例子(不是我的实际功能)看起来像

L <- list(o1 = 1, o2 = 2, o3 = 3)
add_to_list <- function(L){
  n1 <- sum(unlist(L))
  n2 <- mean(unlist(L))
  L$n1 <- n1
  L$n2 <- n2
  return(L)
}
L <- add_to_list(L)

如果我是对的,当 L 被修改时,函数 add_to_list 将制作 L 的完整副本,包括 o1、o2 和 o3,在这个例子中?(当我查看实际函数的计算时间时,似乎如此。)

我想通过引用传递 L,因为这会大大提高我的代码的性能。在我的真实示例中,有超过三个对象 o1、o2 和 o3,其中一些对象非常大,而且我在最终赋值之前还有很多代码,这就是我希望将其模块化为函数的原因。

亚历克西斯

实际上,我认为附加到列表不会对以前的元素进行深度复制,您可以使用基本 R 进行测试:

x <- 1:2
tracemem(x)

y <- 3:4

L <- list(x=x, y=y)

foo <- function(L) {
  L$z <- 5:6
  L
}

# no copy shown here
L <- foo(L)

# copy shown, x copied so that L$x stays unmodified
x[1L] <- 0L

或与pryr

library(pryr)

x <- 1:2
address(x)
[1] "0x26f5f344ba0"

foo <- function(L) {
  L$z <- 5:6
  L
}

L <- list(x=x)
L <- foo(L)
lx <- L$x

address(lx)
[1] "0x26f5f344ba0"

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将命名向量添加到R中的向量列表

来自分类Dev

将值添加到R中的其他列表

来自分类Dev

根据R中的另一个列表将元素添加到列表

来自分类Dev

R通过变量引用列表中的元素

来自分类Dev

将元素添加到R中data.frames的命名列表中

来自分类Dev

R将列添加到data.frame中,即data.frames列表中

来自分类Dev

如何在R中的函数中将新成员添加到列表中

来自分类Dev

R:将名称添加到列表项

来自分类Dev

一对一添加到R列表

来自分类Dev

根据数据框R将数据添加到列表

来自分类Dev

在R中使用For循环将元素添加到列表

来自分类Dev

R-将字符串添加到列表

来自分类Dev

一对一添加到R列表

来自分类Dev

将T / F向量添加到R中的向量列表

来自分类Dev

将数据框添加到R中具有相同日期的列表

来自分类Dev

R:如何将数据框添加到列表中?

来自分类Dev

在R中的列表中将列添加到多个数据框

来自分类Dev

R使用条件将其添加到循环列表中

来自分类Dev

将一列添加到 r 中的列表列的有效方法

来自分类Dev

如何在R中使用paste0()将列添加到数据帧列表中?

来自分类Dev

如何遍历基于列表的特定数据帧并使用R将它们全部添加到rbind函数中?

来自分类Dev

R:如何将一个列表中的向量并行添加到另一个列表中(带有可重现的示例)

来自分类Dev

将“ ALL”添加到下拉列表中,该下拉列表正在从查询中获取值-SSRS 2008 R2

来自分类Dev

在python中通过引用传递:传递列表并添加字符?

来自分类Dev

R:使用lapply将新列添加到数据帧列表

来自分类Dev

R使用for循环将列添加到数据框列表

来自分类Dev

R.将列添加到df,其中行具有列表中元素的名称

来自分类Dev

如何使用变量计数器将命名元素添加到R列表?

来自分类Dev

如何在R中将一个表中的值列表添加到另一个表中?

Related 相关文章

  1. 1

    将命名向量添加到R中的向量列表

  2. 2

    将值添加到R中的其他列表

  3. 3

    根据R中的另一个列表将元素添加到列表

  4. 4

    R通过变量引用列表中的元素

  5. 5

    将元素添加到R中data.frames的命名列表中

  6. 6

    R将列添加到data.frame中,即data.frames列表中

  7. 7

    如何在R中的函数中将新成员添加到列表中

  8. 8

    R:将名称添加到列表项

  9. 9

    一对一添加到R列表

  10. 10

    根据数据框R将数据添加到列表

  11. 11

    在R中使用For循环将元素添加到列表

  12. 12

    R-将字符串添加到列表

  13. 13

    一对一添加到R列表

  14. 14

    将T / F向量添加到R中的向量列表

  15. 15

    将数据框添加到R中具有相同日期的列表

  16. 16

    R:如何将数据框添加到列表中?

  17. 17

    在R中的列表中将列添加到多个数据框

  18. 18

    R使用条件将其添加到循环列表中

  19. 19

    将一列添加到 r 中的列表列的有效方法

  20. 20

    如何在R中使用paste0()将列添加到数据帧列表中?

  21. 21

    如何遍历基于列表的特定数据帧并使用R将它们全部添加到rbind函数中?

  22. 22

    R:如何将一个列表中的向量并行添加到另一个列表中(带有可重现的示例)

  23. 23

    将“ ALL”添加到下拉列表中,该下拉列表正在从查询中获取值-SSRS 2008 R2

  24. 24

    在python中通过引用传递:传递列表并添加字符?

  25. 25

    R:使用lapply将新列添加到数据帧列表

  26. 26

    R使用for循环将列添加到数据框列表

  27. 27

    R.将列添加到df,其中行具有列表中元素的名称

  28. 28

    如何使用变量计数器将命名元素添加到R列表?

  29. 29

    如何在R中将一个表中的值列表添加到另一个表中?

热门标签

归档