2014-12-19 64 views
1

for循環的輸出由大量數據框組成。我想使用函數qpcR::cbind.na()將它們組合在一個數據框中。例如:在r中創建對象向量

df1 <- data.frame(a=1:2, b=1:2) 
df2 <- data.frame(a=1:5, b=1:5) 
df3 <- data.frame(a=1:3, b=1:3) 
library(qpcR) 
M <- t(qpcR:::cbind.na(df1, df2, df3)) 
1 2 3 4 5 
a 1 2 NA NA NA 
b 1 2 NA NA NA 
a 1 2 3 4 5 
b 1 2 3 4 5 
a 1 2 3 NA NA 
b 1 2 3 NA NA 

我想自動把我的輸出循環這個函數內部創建M.下列不勝任:

n = 3 # number of loop iterationns 
B <- c() 
for (i in 1:n) { 
B[i] <- paste("df[[", i, "]]", sep = "") 
} 
P <- print(paste(B, collapse=","), quote = F) 
M <- t(qpcR:::cbind.na(P)) 

也不做這些:

M <- do.call(t(qpcR:::cbind.na()), list(P)) 
M <- lapply(P, t(qpcR:::cbind.na())) 

如何創建對象向量c(df1, df2, df3)而不是複製和粘貼PqpcR::cbind.na()裏面?

+1

是否有什麼特別的原因,你爲什麼使用qpcR的cbind而不是base cbind? – Gullydwarf

+1

我的數據幀在nrow中可能有所不同 –

+0

什麼是'n'?它沒有在上面定義。 – CephBirk

回答

1

它看起來像這是你在找什麼。該解決方案的關鍵在於get()功能。操作它有幫助!

M <- df1 
for (i in 2:3) { 
    new_df <- paste("df", i, "", sep = "") 
    M <- qpcR:::cbind.na(M, get(new_df)) 
    } 
t(M) 
+0

中給出它工作得很好。這在許多情況下都會有所幫助。謝謝! –