【问题标题】:How to replace values in multiple columns in a data.frame with values from a vector in R?如何用 R 中向量的值替换 data.frame 中多列中的值?
【发布时间】:2016-06-10 16:40:28
【问题描述】:
我想将 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]
我不想一一替换这些值。我想一次性完成。
任何帮助将不胜感激。如果需要任何进一步的信息,请告诉我。
【问题讨论】:
标签:
r
vector
replace
gsub
【解决方案1】:
我们可以使用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)