从字符调用数字数据

时间:2016-03-12 18:05:19

标签: r

我正在使用R并需要从以下示例中随机选择一组参数:

params1 <- c(a=1, b=2, c=3)
params2 <- c(a=4, b=5, c=6)
params3 <- c(a=7, b=8, c=9)

selected<-sample(c(1,2,3),size=1, replace=TRUE, 
           prob=c(0.33,0.33,0.33))`

但是,当我使用以下命令时,

params<-paste("params",selected,sep="")

params是一个字符,而不是我需要的数字参数集。

也许这个问题很容易,但我习惯了matlab语言。

2 个答案:

答案 0 :(得分:2)

在R中执行此类操作的正确方法是不将param1param2等保留为隔离对象,而是将它们放在命名列表中:

plist <- list(param1 = c(a=1, b=2, c=3),
              param2 = c(a=4, b=5, c=6),
              param3 = c(a=7, b=8, c=9))

然后您可以使用数字索引选择您想要的那个,即plist[[selected]]或名称plist[[paste0("param",selected)]]

答案 1 :(得分:1)

我们可以使用get来获取对象的值。

get(paste("params",selected,sep=""))

如果有多个对象,请使用mget代替get,它将返回list个值。

或者在1:3而不是sample,我们可以直接申请&#39; params&#39;

sample(mget(ls(pattern='^params\\d+')), size=1,
              prob=c(0.33,0.33,0.33))