如何将批量迭代命名的lambdaSample值存入单个列表?
批量将编号变量存入列表的简洁方法
以下两种方法可以避免逐个罗列变量名,快速将lambdaSample1_1至lambdaSample1_1000存入单个列表:
方法1:使用mget()函数
mget()能根据变量名组成的向量,批量提取环境中的变量并直接生成列表,是最简洁的方式:
# 生成包含所有目标变量名的向量 var_names <- paste0("lambdaSample1_", 1:1000) # 批量获取变量并转为列表 mylist <- mget(var_names)
方法2:用lapply()配合get()遍历获取
通过循环遍历编号,逐个获取对应变量并组装成列表:
mylist <- lapply(1:1000, function(i) { get(paste0("lambdaSample1_", i)) })
额外优化建议
你生成lambdaSample3_*的代码可以直接生成列表,不用创建大量独立变量,后续无需再整理:
# 直接生成lambdaSample3列表,替代assign创建单个变量 lambdaSample3 <- lapply(1:numSamples, function(i) { # 每次生成1个随机数即可,原代码的runif(numSamples)冗余 randomNumber <- floor(runif(1, min = 1, max = nrow(mcmcMatrix))) mcmcMatrix[randomNumber, lambdas[[3]]] })
内容的提问来源于stack exchange,提问作者Hyolim Kang
相关产品推荐
相关产品推荐

