我对R很陌生,所以请原谅我,如果这个问题已经在以前的主题中得到解决(也许用我还不太了解的语言)。
我试图根据2个条件生成一个新的向量(df1 $ response_accuracy)。第一个是来自向量df1$Facial.expression
的值介于1和4之间,而来自向量df1$Evaluations
的值等于"喜欢"。符合此标准的案例输出"正确"进入新的向量和"不正确"除此以外。第二个参数包含一组类似的条件,但每个向量中包含一组不同的值(见下文)。这是我的代码:
df1$response_accuracy <-
ifelse(df1$Facial.expression == 1:4 & df1$Evaluation == "Like", "Correct", "Incorrect",
ifelse(df1$Facial.expression == 5:8 & df1$Evaluation == "Dislike", "Correct", "Incorrect")
)
运行脚本后会生成以下错误消息:
ifelse出错(df1 $ Facial.expression == 1:4&amp; df1 $ Evaluation == &#34;喜欢&#34;,:未使用的参数(ifelse(df1 $ Facial.expression == 5:8&amp; df1 $评价==&#34;不喜欢&#34;,&#34;纠正&#34;,&#34;不正确&#34;)
我知道问题可能与ifelse语句支持的接受嵌套格式有关,但找不到适合我命令结构的格式。
提前感谢您提供帮助。
答案 0 :(得分:0)
#just building sample data
x<-1:10
y<-sample(c("Like","Dislike"),10,replace=TRUE)
ans1<-ifelse(x>=1 & x<=4 & y=="Like",T, F)
ans2<- ifelse(x>=5 & x<=8 & y== "Dislike", T,F)
output<-ifelse(ans1 & ans2,"Correct", "Incorrect" )
答案 1 :(得分:0)
你不能嵌套ifelse
- s。语法为ifelse(test, yes, no)
。所以你需要解开它们
答案 2 :(得分:0)
感谢您的回答和评论。我设法通过离开ifelse
并创建一个名为'correct_cases'
的值来找到解决方案。然后,在生成通用向量df$response_accuracy
之后,我通过indice强制执行此命令;见下文
correct_cases <- (df1$Facial.expression %in% 1:4 &
df1$Evaluation == "Like") |
(df1$facial.expression %in% 5:8 &
df1$Evaluation == "Dislike")
df1$Response_accuracy <- "Incorrect"
df1$Response_accuracy[correct_cases] <- "Correct"