2

文字単語マトリックス (3 x 3) と辞書 (n x 1) があります。辞書と一致する文字を見つけたいのですが、辞書に存在する文字位置に置き換えられ、一致しない単語はすべて削除されます (NA または NULL)。シンプルpmatchに試してみましたが、うまくいきません。私はこのような結果を探しています、

1    5    2
1    4    NA
3    NA   2

しかし、このように結果を得て、[1] 1 NA 3 5 4 NA 2 NA NA

私は以下のコードを試しました、

a <- matrix(c("456_rr", "432_uu", "522_kk", "456_rr", "432_tt", "522", "456_ss", "432", "522_kk"), nrow = 3, ncol = 3, byrow = TRUE) # WordTable

b <- matrix(c("456_rr","522_kk","456_ss", "432_tt", "432_uu"), nrow = 5, ncol = 1) # Dictionary

c <- pmatch(a, b)

print(c)
4

1 に答える 1

2

nrowb」の は正しくありません。そのはず5

b <- matrix(c("456_rr","522_kk","456_ss", "432_tt", 
     "432_uu"), nrow = 5, ncol = 1) 
v1 <- pmatch(a,b)
m1 
#[1]  1 NA  3  5  4 NA  2 NA NA

dim(m1) <- dim(a)
m1
#     [,1] [,2] [,3]
#[1,]    1    5    2
#[2,]   NA    4   NA
#[3,]    3   NA   NA

重複のインデックスを取得する必要がある場合duplicates.ok=TRUEは、デフォルトで FALSE になっている which を使用します

`dim<-`(pmatch(a, b, duplicates.ok=TRUE), dim(a))
#     [,1] [,2] [,3]
#[1,]    1    5    2
#[2,]    1    4    2
#[3,]    3   NA    2
于 2016-03-31T06:58:40.893 に答える