1. ホーム
  2. r

[解決済み] 2つのベクトルを全ベクトル要素の組み合わせで貼り付ける

2023-06-20 23:48:41

質問

2つのベクトルがある。

vars <- c("SR", "PL")
vis <- c(1,2,3)

これらのベクトルを元に、以下のようなベクトルを作りたいと思います。

"SR.1"  "SR.2"  "SR.3"  "PL.1"  "PL.2"  "PL.3"

とは paste 以下のような結果になっています。

paste(vars, vis, sep=".")
 [1] "SR.1" "PL.2" "SR.3"

必要なベクターを作成するにはどうしたらよいでしょうか?

どのように解決するのですか?

これを使うこともできますが、もっと簡単な解決方法があるかもしれません。

R> apply(expand.grid(vars, vis), 1, paste, collapse=".")
[1] "SR.1" "PL.1" "SR.2" "PL.2" "SR.3" "PL.3"


expand.grid を返す data.frame と一緒に使うと apply , apply に変換すると matrix . これはまさに不要(大きなデータでは非効率)です。 outer が与えるのは matrix を与え、さらに関数の引数を取ります。巨大なデータでも効率よく処理できるだろう。

使用方法 outer :

as.vector(outer(vars, vis, paste, sep="."))
# [1] "SR.1" "PL.1" "SR.2" "PL.2" "SR.3" "PL.3"