我正在使用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语言。
答案 0 :(得分:2)
在R中执行此类操作的正确方法是不将param1
,param2
等保留为隔离对象,而是将它们放在命名列表中:
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))