[英]Nested for loop is only iterating the last entries [r]
我試圖從我的數據幀列表中提取每行 32 個數據幀。 但是,它只迭代兩個 for 循環中的最后一個值。 我不確定為什么這不起作用,但也許我應該初始化一個空的數據幀列表而不是一個空列表?
a <- list()
for (z in 1:200){
for (i in 1:32){
a[z] = ListOfDataFrames[[i]][["X"]][[z,1]]
}
}
這只會生成 ListOfDataFrames[[32]][["X"]] 的 200 個值的列表,它是列表中的最后一個數據幀。
這是 (str(ListOfDataFrames))
List of 32
$ :List of 2
..$ X :'data.frame': 200 obs. of 3 variables:
.. ..$ pressure : num [1:200] 635 640 760 890 900 900 910 920 1000 1000 ...
.. ..$ pressure1 : num [1:200] 735 740 820 840 890 900 910 920 1000 1000 ...
.. ..$ pressure2 : num [1:200] 645 670 760 890 900 900 910 920 1000 1000 ...
根據顯示的結構,帶有tidyverse
的選項將是
library(dplyr)
library(purrr)
out <- map(ListOfDataFrames, ~ pluck(.x, "X") %>%
group_split(grp = row_number(), keep = FALSE)) %>%
transpose %>%
map(bind_rows)
使用for
循環,最好將list
元素初始化為預定義長度
l1 <- nrow(ListOfDataFrames[[1]]$X)
a <- vector('list', l1)
for (z in seq_len(l1)){
for (i in seq_along(ListOfDataFrames)){
a[[z]] = rbind(a[[z]], ListOfDataFrames[[i]][["X"]][z,])
}
}
-檢查
all.equal(out, a, check.attributes = FALSE)
#[1] TRUE
ListOfDataFrames <- list(list(X = structure(list(col1 = 1:6, col2 = 7:12), class = "data.frame", row.names = c(NA,
-6L)), Y = 1:7), list(X = structure(list(col1 = 1:6, col2 = 7:12), class = "data.frame", row.names = c(NA,
-6L)), Y = 1:7), list(X = structure(list(col1 = 1:6, col2 = 7:12), class = "data.frame", row.names = c(NA,
-6L)), Y = 1:7), list(X = structure(list(col1 = 1:6, col2 = 7:12), class = "data.frame", row.names = c(NA,
-6L)), Y = 1:7), list(X = structure(list(col1 = 1:6, col2 = 7:12), class = "data.frame", row.names = c(NA,
-6L)), Y = 1:7))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.