我有一个看似简单的问题,我无法回答:我有三个向量:
x <- c(1,2,3,4)
weight <- c(5,6,7,8)
y <- c(1,1,1,2,2,2)
我想创建一个新的向量,复制每次x中的元素与y匹配时的权重值,以便它生成以下与y关联的新权重向量:
y_weight <- c(5,5,5,6,6,6)
有关如何执行此操作的任何想法(循环或矢量化)?感谢
答案 0 :(得分:4)
您需要match
功能。
match(y, x)
返回匹配的索引,用于构建新的权重向量
weight[match(y, x)]
答案 1 :(得分:0)
#Using plyr
library(plyr)
df<-as.data.frame(cbind(x,weight)) # converting to dataframe
df<-rename(df,c(x="y")) # rename x as y for joining dataframes
y<-as.data.frame(y) # converting to dataframe
mydata <- join(df, y, by = "y",type="right")
> mydata
y weight
1 1 5
2 1 5
3 1 5
4 2 6
5 2 6
6 2 6