Например, я получил набор данных с 3 уровнями, а именно 1,2,3
a
и b
два 3 * 5 матриц, как показано ниже:Как подобрать результат функции tapply в вектор длины длины?
a <- matrix(c(0.1,0.2,0.3,0.3,0.2,0.1,0.1,0.2,0.3,0.3,0.2,0.1,0.1,0.2,0.3),3)
# [,1] [,2] [,3] [,4] [,5]
#[1,] 0.1 0.3 0.1 0.3 0.1
#[2,] 0.2 0.2 0.2 0.2 0.2
#[3,] 0.3 0.1 0.3 0.1 0.3
b <- matrix(rep(c(1,2,3,1),c(5,6,2,2)),nrow=3,byrow=TRUE)
# [,1] [,2] [,3] [,4] [,5]
#[1,] 1 1 1 1 1
#[2,] 2 2 2 2 2
#[3,] 2 3 3 1 1
z4 <- tapply(a[,4],as.factor(b[,4]),mean)
z4
1 2
0.2 0.2
В этом примере выход только имеет 2 уровня, я хочу для хранения z4
в векторе с 3 элементами, т. е. (0.2,0.2,0
) с 3 уровнями показывает 0.
Как я мог это сделать? Для простоты не используйте любую петлевую структуру.
Привет, добро пожаловать на SO. Поскольку вы новичок здесь, вы можете прочитать [**, как сделать отличный воспроизводимый пример **] (http://stackoverflow.com/q/5963269/1478381) и соответствующим образом обновить свой вопрос. –
В отсутствие воспроизводимого кода, возможно, вы хотите: 'tapply (a [, 4], factor (b [, 4], levels = 1: 3), mean)'? – thelatemail
@thelatemail точно, спасибо u! –