在 R 中使用字符串分配向量分量

Assign vector component using string in R

我有一个字符串 "ti[123]" 和一个对应的值 1.2 我应该在 R 中使用什么命令将 1.2 分配给向量 ti 的第 123 个位置? 我尝试了 assign("ti[123]",1.2),但它创建了一个名称为 ti[123] 的新变量,这不是我所期望的。

我需要这样做的原因是我使用 rstan 的 optimizing 函数来优化模型,它 returns 一个命名向量,名称如下(如果你碰巧使用向量模型中的参数)。

replace(ti, 123, 1.2) 可能会成功。

我们可以使用 str_extractassign

从字符串中提取数字
library(stringr)
assign('ti', '[[<-'(ti, as.numeric(str_extract("ti[123]",
                  '(?<=\[)\d+')), 1.2))

ti[as.numeric(str_extract("ti[123]", '(?<=\[)\d+'))] <- 1.2

另一种选择是 rm_squarelibrary(qdapRegex) 中提取数字

library(qdapRegex) 
ti[as.numeric(rm_square('ti[123]', extract=TRUE))] <- 1.2

更新

如果我们不知道对象名称,

str1 <- 'ti[123]'
v1 <- strsplit(str1, '[][]')[[1]]
assign(v1[1], `[[<-`(get(v1[1]), as.numeric(v1[2]), 1.2))
get(v1[1])[123]
#[1] 1.2

ti[123]
#[1] 1.2