0

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

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

4

2 回答 2

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_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
于 2015-11-21T20:08:48.783 回答
0

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

于 2015-11-21T19:54:09.503 回答