[英]in R: combine columns of different dataframes
我嘗試將三個不同數據框的每一列組合在一起,以獲得與原始數據框長度相同的對象以及每個子對象的三列。 每個原始數據幀都有10列和14行。 我使用for循環進行了嘗試,但結果對我而言不可用。
t <- NULL
for(i in 1 : length(net)) {
a <- cbind(imp.qua.00.09[i], exp.qua.00.09[i], net[i])
t <- list(t, a)
}
t
但是最后,我想得到10個帶有三列的分離數據幀。 所以我想循環遍歷:
a <- cbind(imp.qua.00.09[i], exp.qua.00.09[i], net[i])
每個原始數據框的每一列。 但是,如果我使用t <- list(t, a)
它將構造一個瘋狂的列表。 謝謝。
這應該工作:
do.call(cbind,list(imp.qua.00.09, exp.qua.00.09, net))
您用於將元素追加到t
的代碼是錯誤的,您應該采用以下方式:
t <- list()
for(i in 1:length(net)) {
a <- cbind(imp.qua.00.09[i], exp.qua.00.09[i], net[i])
t[[length(t)+1]] <- a
}
t
您的代碼是錯誤的,因為在每一步中,您都將t
轉換為一個列表,其中第一個元素是前一個t
(即第一次迭代除外的列表),第二個元素是子集。 因此,基本上,最終您得到了一種由兩個元素組成的遞歸列表,其中第二個是data.frame子集,第一個又是具有相同結構的兩個元素的列表,共十層。
無論如何,您的代碼等效於此單行代碼(由於它不執行任何列表串聯,因此可能更高效):
t <- lapply(1:length(net),
function(i){cbind(imp.qua.00.09[i], exp.qua.00.09[i], net[i])})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.