我正在努力解决一个基本问题,涉及在if else语句中使用OR运算符:
q1 <-c("yes", "no", "yes", "no")
q2 <-c("no", "yes", "yes", "no")
df<-cbind(q1, q2)
我想添加一个新的列结果,如果q1或q2在各自的列中有一个yes,则将填充“yes”。到目前为止,我有:
df$result <- ifelse(df$q1=="yes" | df$q2=="yes", "yes", "no")
有人能解释一下为什么它不工作,为什么我在引用特定的dataframe列时总是得到原子向量错误吗?
1条答案
按热度按时间umuewwlo1#
在两个向量上使用
cbind()
得到的是矩阵而不是 Dataframe ;您可以使用cbind()
,然后使用df[,"q1"]
(等等)。)访问列,或者使用df <- data.frame(q1, q2)
获取 Dataframe ,此时df$q1
引用将起作用。使用data.frame()
可能是最佳实践,除非您 * 知道 * 您想要一个矩阵(用于执行实际的线性代数,或在某些特定情况下的计算效率)。