私はRが新しく、適用される関数ファミリのハンドルを取得しようとしています。具体的には、2つの文字ベクトル「host」と「guest」(同じ長さである必要はない)を受け取り、「host」と同じ長さのインデックスベクトルを返す高次関数を記述しようとしています"、得られた要素はゲストのインデックスに対応します(存在しない場合はNA)。どのようにインデックスベクトルを返すためにこの関数をベクトル化できますか?
host <- c("A","B","C","D")
guest <- c("D","C","A","F")
matchIndices <- function(x,y)
{
return(match(x,y))
}
このコードは期待通りに3を返します(?sapply)これは私が簡潔適用する機能と交換できるようにしたいと思いループがある
matchIndices(host[1],guest)
このコードは、以下の出力を生成するという点で "機能する"が、実際には結果がベクトルになりたいのですが、適用関数の1つがそのトリックを行うことがわかっています。私はちょうどそれを書く方法に立ち往生しています。どんな助けでも大歓迎です。ありがとう。
3; A; NA; B; 2; C; 1; D;
あなただけ行うことができます 'sapply(ホスト、試合、ゲスト) '、matchIndices'を定義する必要はありません –
@Prasadはい、あなたはこの方法でユーザー関数をどのようにサプリメントするかを示すことだったのですが、このままにしました。なぜなら、これはベクトルの最初の引数を受け入れるので、これはすべて 'match'を使って直接行うことができたからです。私の更新された答えを見てください。 –
これは素晴らしいです。どうもありがとうございました。 "match(host、guest)"は完璧です。私はそれがコンパクトであるかもしれないことに気付かなかった。 – user297400