2014-12-19 2 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 

Я хочу поставить вывод из моего цикла внутри этой функции автоматически создавать М. Ниже не сделает работу:

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), не прибегая к копированию и вставке P внутри qpcR::cbind.na()?

+1

Есть ли какая-либо особая причина, почему вы используете cbind из qpcR в отличие от базового 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

Он работает очень хорошо. Это будет полезно во многих ситуациях. Спасибо! –

Смежные вопросы