gpt4 book ai didi

r - 在 R 的循环中将字符串视为对象名称

转载 作者:行者123 更新时间:2023-12-04 07:36:51 25 4
gpt4 key购买 nike

我想在循环中创建一个字符串并在这个循环中使用这个字符串作为对象。这是一个简化的示例:

for (i in 1:2) {
x <- paste("varname",i, sep="")
x <- value
}

循环应该创建 varname1、varname2。然后我想使用 varname1, varname2 作为对象来赋值。我试过 paste()、print() 等。
感谢帮助!

最佳答案

您可以创建 call()<-然后对其进行评估。这是一个例子,

value <- 1:5

for (i in 1:2) {
x <- paste("varname",i, sep="")
eval(call("<-", as.name(x), value))
}

它创建了两个对象 varname1varname2
varname1
# [1] 1 2 3 4 5
varname2
# [1] 1 2 3 4 5

但是你真的应该尽量避免从方法/函数中分配给全局环境。我们可以将列表与 substitute() 一起使用然后我们将新变量放在同一个地方。
f <- function(aa, bb) {
eval(substitute(a <- b, list(a = as.name(aa), b = bb)))
}

Map(f, paste0("varname", 1:2), list(1:3, 3:6))
# $varname1
# [1] 1 2 3
#
# $varname2
# [1] 3 4 5 6

关于r - 在 R 的循环中将字符串视为对象名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28909191/

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