[英]R: Loop through multiple data frames, save to list
我正在嘗試對多個數據幀執行簡單的for循環,並將輸出(來自所有數據幀)保存到一個列表中。
這是示例數據:
# Two example data frames (variables x and y)
a <- data.frame(x=rnorm(1:100, 10, 1), y=1:100)
b <- data.frame(x=rnorm(1:100, 500, 50), y=1:100)
# Merging data frames to a list, which we aim to loop through
data_frame_list <- list(a, b)
# Desired list
new_list <- list()
# The loop
# I want two simple values from each data frame (value1 and value2)
for(i in data_frame_list) {
for(j in 1:5) {
value1 = i[j,1]
value2 = i[j,2]
new_list[i] <- cbind(value1, value2)
}
}
因此,對於每個j值(1到5),我都希望從每個數據幀獲得value1和value 2。 我想將所有提取的數據放在一個列表中(new_list)。
感謝幫助
其他答案很有幫助,但我想嘗試幫助您修復for循環。
for(i in 1:length(data_frame_list)) {
for(j in 1:5) {
value1 = data_frame_list[[i]][j,1]
value2 = data_frame_list[[i]][j,2]
new_list[[5*(i-1)+j]] = c(value1, value2)
}
}
與您的代碼有一些區別:
希望這可以幫助。
您是否要選擇數據幀a和b的前5列?
如果是這樣,請嘗試以下操作:
new_list <- cbind(a[, 1:5], b[, 1:5])
如果我正確閱讀了您的問題,則您正在嘗試從列表data_frame_list
每個元素中獲取前5行數據(包括列)。 如果是這樣,那么這可能會有所幫助:
for(i in data_frame_list) { new_list <- i[1:5, ]}
它提供了一個新列表,其中只有第一個列表中每個元素的前5行(包括列)。 如果該列表越來越大,則應合並每個新列表的前五個元素。
希望能幫助到你!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.