簡體   English   中英

如何在 R 中的多個數據框中轉換列表?

[英]How can I transform a list in multiple dataframes in R?

我有多個矩陣的列表。 我可以使用以下代碼將此列表的一個項目轉換為數據框:

as.data.frame(list_of_matrices[i])

但是,我如何以自動方式對所有索引 (i) 執行相同操作?

我試過:

a <- data.frame()
for(i in 1:length(list_of_matrices)){
  dataframes[i] <- as.data.frame(list_of_matrices[i])
}

但它沒有用:

Error in `[[<-.data.frame`(`*tmp*`, i, value = list(X1 = 1:102, X2 = c(2L,  : 
  replacement has 102 rows, data has 0

在 OP 的代碼中,我們需要[[而不是[因為通過執行[ ,它仍然是長度為 1 的list

for(i in seq_along(list_of_matrices)){
    list_of_matrices[[i]] <- as.data.frame(list_of_matrices[[i]])
  }

如果我們在全局環境中需要多個對象(不推薦), assignlist2env應該可以工作。 使用自定義名稱或letters (a、b、c、...)命名list后,使用list2env

names(list_of_matrices) <- letters[seq_along(list_of_matrices)]
list2env(list_of_matrices, .GlobalEnv)

現在,我們檢查

head(a)
head(b)

另一個選項是在循環本身中賦值

for(i in seq_along(list_of_matrices)) {
    assign(letters[i], as.data.frame(list_of_matrices[[i]])
 }

head(a)
head(b)

注意:我們假設list_of_matrices的長度小於 26,否則必須將名稱從內置letters更改為其他名稱。

嘗試這個:

# Example list of matrices
mat_list <- list(
  matrix(runif(20), 4, 5),
  matrix(runif(20), 4, 5)
)
# Convert to list of df
df_list <- lapply(mat_list, as.data.frame)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM