我有迭代編號值 lambdaSample1_1、lambdaSample1_2、lambdaSample1_3.... lambdaSample1_1000。
資料集 3 的 1000 個隨機 Lambadas
for (i in 1:numSamples) {
# generate ramdomNumber for credible interval
randomNumber <- floor(runif(numSamples, min = 1, max = nrow(mcmcMatrix)))
assign(paste0("lambdaSample3_", i), mcmcMatrix[randomNumber[[i]], lambdas[[3]]])
}
通過使用 1 ~ 1000 中的亂數隨機選擇值,我從具有 60000 行的矩陣中獲得了 lambdaSample3_1 ~ lambdaSample3_1000。
現在我喜歡做的是將生成的值“lambda1_1”~“lambda1_1000”組合成一個串列
我想在一個串列中存盤 1,000 個值。有什么方法可以撰寫簡單的代碼而不是將 1,000 個值寫入串列?
mylist <- list(lambdaSample1_1, lambdaSample1_2 ,,,,, lambdaSample1_1000)
for (i in 1:numSamples) {
# generate ramdomNumber for credible interval
randomNumber <- floor(runif(numSamples, min = 1, max = nrow(mcmcMatrix)))
assign(paste0("lambdaSample3_", i), mcmcMatrix[randomNumber[[i]], lambdas[[3]]])
}
如何在不寫下 1000 次 lambdaSample1_x 的情況下制作這種型別的串列?
uj5u.com熱心網友回復:
未經測驗的代碼,因為您的問題不可重現,但類似于
lamdaSamples1 <- lapply(
floor(runif(numSamples, min = 1, max = nrow(mcmcMatrix))),
function(x) mcmcMatrix[x, lambdas[[3]]]
)
首先將您的物件添加到串列中,從而完全避免該問題。
lapply通過將第二個引數中的函式依次應用于其第一個引數中的所有值來作業。它的回傳值是一個串列。
所以,作為一個簡單的例子,要獲得前三個正方形的串列,我們可以寫
lapply(1:3, function(x) x*x)
[[1]]
[1] 1
[[2]]
[1] 4
[[3]]
[1] 9
uj5u.com熱心網友回復:
mylist <- lapply(seq(1000), \(x) paste0("lambdaSample1_", x))
或者
mylist <- list(paste0("lambdaSample1_", seq(1000)))
取決于你到底需要什么。(我不是 100% 清楚 - 但其中之一應該做你想做的。)
uj5u.com熱心網友回復:
我不確定你有什么,但你可以試試
x1 <- 1;x2 <- 2;x3 <- 3 # assuming these are already exist
xx <- paste0("x", c(1:3))
mylist <- lapply(xx,get)
names(mylist) <- xx
mylist
$x1
[1] 1
$x2
[1] 2
$x3
[1] 3
所以你可以試試
mylist <- lapply(paste0("lambdaSample1_", c(1:1000)), get)
names(mylist) <- paste0("lambdaSample1_", c(1:1000)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/527560.html
標籤:r列表功能
上一篇:R函式裝箱與計數平均值
