2015-03-12 3 views
0

Это поздно, и это должно быть легко ....Append для каждой строки в dataframe

Дано:

a <- c(1,2) 
b <- c(3,4) 
foo <- data.frame(a,b) 
a.leading <- rep(0, 2) 

Как я добавляю a.leading к каждой строке в обув, чтобы выглядеть это?

V1 V2 a b 
1 0 0 1 3 
2 0 0 2 4 

Я знаю, что я мог бы просто cbind V1 и V2 только с 0, но как бы один это сделать с помощью петли или векторизованного функции? V1 и V2 не должны быть именами; Я могу изменить их позже, если это необходимо.

+0

Почему вы хотите, чтобы сделать это с помощью цикла? –

+0

Я предполагаю, что это не должен быть цикл; какая у вас идея, и я сделаю это. Мне сложно объяснить, что мне нужно. Я хочу в основном удлинить каждую строку кадра данных, добавив к нему нуль, чтобы я мог объединить два фрейма данных вместе. Я пытаюсь сопоставить измерения другого кадра данных с этим. –

+2

'data.frame (t (replicate (nrow (foo), a.leading)), foo)', если вам нужен конкретный вектор строки, добавленный. В противном случае, ответ @TimBiegeleisen - это пятно на деньги для добавления константы. – thelatemail

ответ

1

Вот метод, который можно использовать для добавления столбцов в кадре данных, сохраняя при этом одинаковое количество строк:

new_cols <- c("V1", "V2") # new columns "V1" and "V2" 
foo[new_cols] <- 0   # assigns 0 to each cell in the new columns 
1

Вы не должны действительно петля, если это не необходимым или более эффективным. Здесь вы добавляете столбцы в матричную структуру, и cbind(), вероятно, лучший способ сделать это.

Вы можете построить список для аргумента ... в cbind.data.frame(), называя его do.call().

do.call(cbind.data.frame, c(V = as.list(a.leading), foo)) 
# V1 V2 a b 
# 1 0 0 1 3 
# 2 0 0 2 4 

Если вам не нравится, что вы можете также сделать

cbind.data.frame(as.list(c(V = a.leading)), foo) 
# V1 V2 a b 
# 1 0 0 1 3 
# 2 0 0 2 4 
+0

Нужен ли файл .data.frame? – thelatemail

+0

Я понял, что может быть, так как они начинаются с одного и добавляют к нему –

+0

'data.frame (c (V = a.leading, foo))' будет проще в целом. – thelatemail

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