如何使用R中向量的值替换data.frame中多列中的值?

时间:2016-02-27 11:24:25

标签: r vector replace gsub

我想将data.frame中最后三列中的值替换为向量中的三个值。

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 个答案:

答案 0 :(得分:2)

我们可以使用tail对数据集的最后三列进行子集化,复制“向量”以使长度相似并将值分配给这些列

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

注意:我复制了'Vector',假设原始数据集中'df'中会有更多行。

答案 1 :(得分: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)