我试图获得一个向量,它的值取决于数据帧中的两个(也许更多)列的因子X
。所以它可以有两个以上的层次。使用if ... else if ... else语句创建一个向量R
有一种简单的方法来使用C/C++来执行它 - 就像for循环中的条件语句一样。比方说,如果我在一个数据帧MATRIX
构建X
从值在两个布尔列Col1
和Col2
,我可以很容易地做到这一点是:
X=vector()
for (i in 1:nrow(MATRIX)) {
if (MATRIX$Col1[i]==1 && MATRIX$Col2[i]==1) {
X[i] = "both"
} else if (MATRIX$Col1[i]==1) {
X[i] = "col1"
} else if (MATRIX$Col2[i]==1) {
X[i] = "col2"
} else {
X[i] = "none"
}
}
问题是,obviosly,在大dataframes它需要很多时间跑步。我应该使用矢量化来优化这个,但我看不到方式,因为*应用,ifelse或任何似乎不帮助是这样的任务,其中结果不是布尔值。
任何想法?
只是转换'如果... else'到'ifelse()'和下降的循环。 – zx8754