簡體   English   中英

在R中:合並不同數據框的列

[英]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.

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