我有一个字符串,比如说"ti[123]"
,还有一个相应的值,比如1.2
我应该在R中使用什么命令将1.2
分配给向量ti
的第123个位置?
我尝试了assign("ti[123]",1.2)
,但它创建了一个名为ti[123]
的新变量,这不是我的预期。
我需要这样做的原因是我使用rstan的optimizing
函数来优化模型,并返回一个命名向量,其名称如此(如果您碰巧使用参数向量)在你的模型中)。
答案 0 :(得分:0)
replace(ti, 123, 1.2)
可能会做到这一点。
答案 1 :(得分:0)
我们可以使用str_extract
和assign
值
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_square
的{{1}}来提取数字
library(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