Я писал некоторые функции для вычисления простой сводной статистики, когда обнаружил ошибку, которую не понимаю.По-видимому, я создаю объект класса matrix
, который выдает ошибку, когда я пытаюсь использовать его в матричном умножении.Приведенное ниже MWE рассчитывает групповое среднее в наборе данных iris
(в l.apply.out2
) вместе с суммами компонентов каждого из групповых средних (в l.apply.out1
).Два объекта затем связываются вместе в data.frame
.
Теперь, я предполагаю, что я мог бы сделать дальнейшие вычисления, но преобразовав вышеупомянутый data.frame в матрицу, используя as.matrix
, но код ниже дает ошибку Error in as.matrix(dat) %*% matrix(1, 3, 1) :
requires numeric/complex matrix/vector arguments
data(iris)
s <- split(iris[,1:4],iris[,5])
l.apply.out1 <- lapply(s,function(x) {sum(colMeans(x))})
l.apply.out2 <- lapply(s,colMeans)
dat <- data.frame(rbind(matrix(l.apply.out1,1,3),matrix(unlist(l.apply.out2),4,3)))
as.matrix(dat)%*%matrix(1,3,1)
Я могу избежать этой ошибки, используя rbind.data.frame
- следующее работает так, как задумано:
dat <- rbind.data.frame(l.apply.out1,l.apply.out2)
as.matrix(dat)%*%matrix(1,3,1)
Что, безусловно, чище и лучше, но мне бы очень хотелось узнать, что именно не так в моемпервый пример?