我正在嘗試在 R 中的 expand.grid 函式中自動生成變數名稱(它們都遵循相同的命名模式 x1、x2、...)。
這是我的問題的縮影版本:我有一個包含 25 個變數名的串列,以及一個包含 25 列和 5 行的矩陣。現在我必須將串列中的名稱分配給相應的矩陣列,但這必須在 expand.grid 中完成(這是因為我的最終目標是生成資料網格,但我還需要變數名以進一步加工)。這是一些代碼:
## Create list holding 25 variable names- I actually have way more than 25
ln <- vector(mode="list", length=25)
for (i in 1:25){
ln[[i]]<-paste("x", i, sep="")
}
ln
ln[[1]]
## Make matrix dataset without variable/column names
sampl<- matrix(rnorm(25) , nrow = 5, ncol=25)
sampl
require(MASS)
## WHAT I WANT
## Automatically assign variable names from list ln within expand.grid
test <- expand.grid(x1=seq(min(sampl[,1]-1), max(sampl[,1] 1),
by=0.1),
x2=seq(min(sampl[,2]-1), max(sampl[,2] 1),
by=0.1),
x3=seq(min(sampl[,3]-1), max(sampl[,3] 1),
by=0.1),
\\...and so on ...\\
x25=seq(min(sampl[,25]-1), max(sampl[,25] 1),
by=0.1)
)
或者,是否可以從矩陣中生成我想要的資料網格,然后在不使用 expand.grid 的情況下從串列中分配名稱?
uj5u.com熱心網友回復:
我們可以使用apply回圈列,獲取和之間seq的影響,使用'ln'值設定名稱并應用(應該注意組合的數量會很大)minmax0.1listexpand.grid
test2 <- expand.grid(setNames(apply(sampl, 2, \(x) seq(min(x-1),
max(x 1), by = 0.1)), unlist(ln)))
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/479551.html
上一篇:從參考串列中過濾一個范圍內的元組
