[英]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]])
}
如果我們在全局環境中需要多個對象(不推薦), assign
或list2env
應該可以工作。 使用自定義名稱或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.