如何在 R 中为向量的特定元素分配名称

How to assign a name to a specific element of a vector in R

提问人:Aydin Mohseni 提问时间:2/3/2016 更新时间:2/3/2016 访问量:1916

问:

我的问题是:如何在 R 中为向量的特定元素分配名称,特别是使用函数。assign(x, value)

通常,要为向量的特定元素赋值,我会执行以下操作:

agent1[2] <- TRUE

但是,这对我来说是不可能的,因为我的(预分配的)变量是在 for 循环中调用的,如下所示:

for (i in 1:10) {
assign(paste("agent", i, "[2]", sep=""), TRUE)
}

不幸的是,assign 函数似乎不适用于为向量中的特定元素赋值!因此,虽然以下

for (i in 1:10) {
assign(paste("agent", i, "[2]", sep=""), TRUE)
}

确实可以将 TRUE 值分配给 agent1 到 agent10,我无法挑出它仅将值分配给每个代理向量中的第一个(或第 n 个)元素

在一个简单的例子中,这可以从以下几点看出:

a <- 1:4
a[1] <- 2
a[1] == 2           # TRUE

然而

a <- 1:4
assign("a[1]", 2)
a[1] == 2          # FALSE

我将不胜感激有关如何解决这个问题的任何帮助。谢谢!

r 变量赋值 运算符 赋值

评论


答:

2赞 akrun 2/3/2016 #1

我们可以尝试

assign('a', `[<-`(a, 1, 2))
a[1]==2
#[1] TRUE

如果我们需要更改索引范围的值,即第一个 3 值为 2

assign('a', `[<-`(a, 1:3, 2))
a
#[1] 2 2 2 4