我目前正在研究猴子中的匹配到样本任务。我想评估选择某种刺激的频率,无论选择的正确性如何。
为此,我有一个数据帧df
,包含6288行和6列(" Monkey"," Session"," Sample", "匹配","贴膜","成功"),其中只有最后三个现在很重要。
df$Match
和df$Foil
中的数据是刺激的名称(字符串),df$Success
是二进制的。 df$Match
和df$Foil
由65个不同的刺激名称组成,我将其包含在向量Match.Foil
中。
现在我想计算在所有6288次试验中点击图片(矢量Match.Foil
的一部分)的频率。也就是说,每次名称都是df$Match
&的一部分时。 df$Success == "1"
或df$Foil
& df$Success == "0"
。
我尝试使用Match.Foil
的每个部分点击次数构建一个向量,如下所示:
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)
}
因此,正如您所看到的那样,如果语句为Pic.clicked + 1
或Pic.clicked + 0
,我希望使用函数TRUE
和FALSE
作为返回值。它不起作用并给我错误:
在Pic.clicked [i] = ifelse((df $ Match == Match.Foil [i]& ...: 要替换的项目数量不是替换长度的倍数
有人有想法,如何建立一个合适的柜台?我考虑使用switch
,但我没有任何使用该功能的经验,似乎没有像我需要的那样工作。我也试过运行6288循环,但这会产生相同的警告。
答案 0 :(得分:0)
你可以使用sum(),它在布尔矢量上使得TRUE计为1:
Toolbar myToolbar = (Toolbar) findViewById(R.id.my_toolbar);
setSupportActionBar(myToolbar);
getSupportActionBar().setDisplayShowHomeEnabled(true);
myToolbar.setNavigationIcon(R.drawable.ic_arrow_back_white_48dp);
myToolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.e("navigation", "navigation");
}
});