使用R中的字符串分配矢量分量

时间:2015-11-21 19:31:51

标签: r parsing variable-assignment stan rstan

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

我需要这样做的原因是我使用rstan的optimizing函数来优化模型,并返回一个命名向量,其名称如此(如果您碰巧使用参数向量)在你的模型中)。

2 个答案:

答案 0 :(得分:0)

replace(ti, 123, 1.2)可能会做到这一点。

答案 1 :(得分:0)

我们可以使用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_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