这是我的数据:
ID <- c(1, 2, 3, 1, 2, 3, 4, 1, 2, 3, 1)
group <- c(11, 11, 11, 12, 12, 12, 12, 13, 13, 13, 14)
x1 <- c(0.1, 0.2, 0.3, 1.1, 1.2, 1.3, 1.4, 2.1, 2.2, 2.3, 3.1)
x2 <- c(0.4, 0.5, 0.6, 1.4, 1.5, 1.6, 1.7, 2.4, 2.5, 2.6, 3.4)
x3 <- c(0.7, 0.8, 0.9, 1.7, 1.8, 1.9, 1.0, 2.7, 2.8, 2.9, 3.9)
z1 <- c(0.4, 0.5, 0.6, 1.4, 1.5, 1.6, 1.7, 2.4, 2.5, 2.6, 3.4)
z2 <- c(0.7, 0.8, 0.9, 1.7, 1.8, 1.9, 1.0, 2.7, 2.8, 2.9, 3.7)
x <- as.matrix(data.frame(ID, group, x1, x2, x3))
z <- as.matrix(data.frame(ID, group, z1, z2))
对于第14组,只有一个观察。我想使用
按组计算x'z
data1 <- lapply(unique(x[,'group']), function(i)
crossprod(x[x[, 2] == i, c(-1, -2)], z[z[, 2] == i, c(-1, -2)]))
但它给了我错误Error in crossprod(x[x[, 2] == i, c(-1, -2)], z[z[, 2] == i, c(-1, -2)]) : non-conformable arguments
。
我明确地尝试i = 14
,我确信这就是问题发生的地方。我不明白,如果我计算x'x
或z'z
,就不会有任何问题。有什么建议吗?