我有两个矩阵,每个矩阵有300列; M1
和M2
我正在对它们应用简单的ifelse
函数,如下所示:
result<-ifelse(M1[-nrow(M1),]<M2[-nrow(M2),],1,4)
tail(result)
X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17
2017-06-26 04:00:00 4 1 1 4 4 4 4 4 4 4 4 4 4 4 4 4 4
2017-06-26 05:00:00 4 1 1 1 4 4 4 4 4 4 4 4 4 4 4 4 4
2017-06-26 06:00:00 4 1 1 1 4 4 4 4 4 4 4 4 4 4 4 4 4
2017-06-26 07:00:00 4 1 1 1 4 4 4 4 4 4 4 4 4 4 4 4 4
2017-06-26 08:00:00 4 1 1 1 1 4 4 4 4 4 4 4 4 4 4 4 4
2017-06-26 09:00:00 4 1 1 1 1 1 4 4 4 4 4 4 4 4 4 4 4
在这种情况下,ifelse
函数应用于M1
中每个列的M2
如何在ifelse
和M1
中的每个可能的列组合上应用M2
函数,并将结果保存到一个大矩阵(本例中为90000列)或列表矩阵?
答案 0 :(得分:3)
使用expand.grid
获取列索引的笛卡尔积可能会有所帮助。
m1 <- matrix(1:9, ncol=3)
m2 <- matrix(4:12, ncol=3)
g <- expand.grid(1:nrow(m1), 1:ncol(m2))
ans <- ifelse(m1[, g[, 1]] < m2[, g[, 2]], 1, 4)