2016-02-27 2 views
1

Я хотел бы заменить значения в последних трех столбцах в моем data.frame с тремя значениями в векторе.Как заменить значения в нескольких столбцах в data.frame со значениями из вектора в R?

Пример data.frame

df 
A B C D 
5 3 8 9 

Вектор

1 2 3 

, что я хотел бы, чтобы data.frame выглядеть.

df 
A B C D 
5 1 2 3 

В настоящее время я делаю:

df$B <- Vector[1] 
df$C <- Vector[2] 
df$D <- Vector[3] 

Я хотел бы не заменить значения по одному. Я хотел бы сделать все сразу.

Любая помощь будет оценена по достоинству. Пожалуйста, дайте мне знать, нужна ли какая-либо дополнительная информация.

ответ

2

Мы можем Подмножество последние три столбца в наборе данных с tail, копируют «Вектор», чтобы сделать длины похожи и присвоить значения для этих столбцов

df[,tail(names(df),3)] <- Vector[col(df[,tail(names(df),3)])] 
df 
# A B C D 
#1 5 1 2 3 

ПРИМЕЧАНИЕ: Я копировал «Вектор», предполагая, что в исходном наборе данных будет больше строк в «df».

2

Попробуйте это:

df[-1] <- 1:3 

даяние:

> df 
    A B C D 
1 5 1 2 3 

Попеременно, мы могли бы сделать это неразрушающим, как это:

replace(df, -1, 1:3) 

Примечание: Входные сигналы df в воспроизводимая форма:

df <- data.frame(A = 5, B =3, C = 8, D = 9) 
Смежные вопросы