0

私は答えられない一見単純な質問を持っています: 私は3つのベクトルを持っています:

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) 

これを行う方法 (ループまたはベクトル化) に関する考えはありますか? ありがとう

4

2 に答える 2

4

あなたはそのmatch機能が欲しいです。

match(y, x)

一致のインデックスを返すには、それを使用して新しい重みベクトルを構築します

weight[match(y, x)]
于 2013-07-31T22:37:26.287 に答える
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
于 2013-07-31T22:40:58.130 に答える