私は現在、サルのマッチング - サンプルタスクを研究しています。私は、選択の正確さにかかわらず、特定の刺激が選ばれた頻度を評価したいと思います。"R"のifelseで関数をリターン引数として使うことはできますか
これを行うには、データフレームdf
と6288行6列( "Monkey"、 "Session"、 "Sample"、 "Match"、 "Foil"、 "Success")があります。 3つは今重要です。
df$Match
およびdf$Foil
のデータは、刺激(文字列)の名前であり、df$Success
はバイナリです。 df$Match
およびdf$Foil
は、6535個の異なる刺激名で構成されています。これは、ベクトルMatch.Foil
に含まれています。
今、私はどのくらいの頻度で画像(ベクトルMatch.Foil
の一部)がクリックされたかを数えたいと思います。つまり、毎回df$Match
& df$Success == "1"
またはdf$Foil
& df$Success == "0"
のいずれかの名前になります。あなたは、私がもし戻っとして機能Pic.clicked + 1
とPic.clicked + 0
を使用していた見るように、
Pic.clicked= vector(mode="numeric", length= length(Match.Foil))
for (i in 1:length(Match.Foil)){
Pic.clicked[i] = ifelse(
df$Match == Match.Foil[i] & df$Success == "1")|
(df$Foil== Match.Foil[i] & df$Success == "0"),
Pic.clicked[i] +1,
Pic.clicked[i] +0)
}
ので:
は、私はこのようなMatch.Foil
の各部分のためにクリックされた回数と、ベクターを構築しようとしましたステートメントは
TRUE
または
FALSE
です。それは動作しないし、私にエラーを与える:
In Pic.clicked[i] = ifelse((df$Match == Match.Foil[i] & ... : number of items to replace is not a multiple of replacement length
誰もが、どのように適切なカウンタを構築するアイデアを持っていますか?私はswitch
を使用することを考えましたが、私はその機能に関する経験はなく、必要なように動作していないようです。私も6288ループのためにそれを実行しようとしましたが、それは同じ警告を生成します。
を。短い再現可能な例が非常に役立つだろう。また、関数を返そうとしているとはどういう意味なのかは明確ではありません。 'Pic.clicked [i] + 1'は関数ではなく、数値です。 – Aaron