R中带有OR运算符的ifelse函数

pdkcd3nj  于 2023-05-04  发布在  其他
关注(0)|答案(1)|浏览(223)

我正在努力解决一个基本问题,涉及在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列时总是得到原子向量错误吗?

umuewwlo

umuewwlo1#

在两个向量上使用cbind()得到的是矩阵而不是 Dataframe ;您可以使用cbind(),然后使用df[,"q1"](等等)。)访问列,或者使用df <- data.frame(q1, q2)获取 Dataframe ,此时df$q1引用将起作用。使用data.frame()可能是最佳实践,除非您 * 知道 * 您想要一个矩阵(用于执行实际的线性代数,或在某些特定情况下的计算效率)。

相关问题