我正在努力解决一个涉及在 if else 语句中使用 OR 运算符的基本问题:
q1 <-c("yes", "no", "yes", "no")
q2 <-c("no", "yes", "yes", "no")
df<-cbind(q1, q2)
Run Code Online (Sandbox Code Playgroud)
我想添加一个新的列结果,如果 q1 或 q2 在各自的列中具有“是”,则该结果将填充为“是”。到目前为止我有:
df$result <- ifelse(df$q1=="yes" | df$q2=="yes", "yes", "no")
Run Code Online (Sandbox Code Playgroud)
有人可以解释为什么它不起作用,以及为什么当我引用特定的数据帧列时我不断收到原子向量错误?
使用cbind()两个向量会得到一个矩阵而不是数据框;您可以使用cbind()然后使用df[,"q1"](等)来访问列,或者使用df <- data.frame(q1, q2)来获取数据框,此时您的df$q1引用将起作用。使用data.frame()可能是最佳实践,除非您知道需要一个矩阵(用于进行实际的线性代数,或在某些特定情况下提高计算效率)。