我有一個串列,其中每個元素都是一個資料框,是否有一些選項可以自動提取所有具有自動生成名稱的資料框?
例如:(我首先必須在這里人為地創建一個串列)
d1 <- data.frame(x1 = c(1, 2, 3),
y1 = c(4, 5, 6))
d2 <- data.frame(x2 = c(4, 5, 6),
y2 = c(7, 8, 9))
mylist <- list()
mylist[[1]] <- d1
mylist[[2]] <- d2
有沒有我可以撰寫的回圈將串列的所有元素一起提取為單獨的資料框并將它們保存在環境中?
我想到了類似的東西
names <- paste0("mydata", 1:length(mylist)) #names of the dataframes
for (i in 1:length(mylist)){
names[i] <- data.frame() #initialization
names[i] <- mylist[[i]]
}
然后所有資料幀都應該生成到環境中,但不幸的是這不起作用,問題出在初始化步驟中。它不能創建名稱為 [i] 的空資料框。如果有人能告訴我如何重做,將不勝感激
uj5u.com熱心網友回復:
可以在list2env命名的全域環境中創建物件list-setNames設定串列的名稱(在全域環境中創建多個物件是一種不好的做法,即將其保留在list自身中)
list2env(setNames(mylist, names), .GlobalEnv)
關于OP的代碼,在for回圈中創建物件,使用assign而不是names<-
for (i in seq_along(mylist))
{
assign(names[i], mylist[[i]])
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/486549.html
上一篇:結合熊貓資料框的假人和計數
