gpt4 book ai didi

r - 为什么不将assign() 值分配给R 中的列表元素?

转载 作者:行者123 更新时间:2023-12-04 00:19:47 27 4
gpt4 key购买 nike

我正在尝试在列表中的对象中使用赋值。我想做的是改变一些元素。例如:

x <- list()
x$test <- 1
assign("x$test", 2)
x$test == 1
[1] TRUE

有什么想法吗?我需要使用assign,因为我正在构建一个函数,它将列表(x)中的对象名称作为输入。

最佳答案

看来你倒霉了。从帮助文件:

‘assign’ does not dispatch assignment methods, so it cannot be used to set elements of vectors, names, attributes, etc.

Note that assignment to an attached list or data frame changes the attached copy and not the original object: see ‘attach’ and ‘with’.



如果你路过 names(x)作为输入,你不能使用:
nms <- names(x)
for ( n in nms )
x[[n]] <- 'new_value'

另外,您是否打算让您的函数修改一些全局变量?例如:
x <- list(test=1)

f <- function(...)
x$test <- 2

f() # want x$test = 2 ??

因为这不起作用(范围问题)。您可以通过一些步法( <<- )使其工作,但这通常被认为是不好的做法,因为很容易将无意的错误引入您的代码中。

如果您可以举例说明为什么需要此功能/它的用途是什么,我们可以帮助您找到替代解决方案。

关于r - 为什么不将assign() 值分配给R 中的列表元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9561053/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com