Как повторять вычисление по строкам матрицы?

Вопросы по статистическому пакету R. Не обязательно гео.
Ответить
marratt
Интересующийся
Сообщения: 24
Зарегистрирован: 12 май 2012, 07:33
Репутация: 0

Как повторять вычисление по строкам матрицы?

Сообщение marratt » 12 фев 2016, 10:45

Здравствуйте.
Я в R новичок, но уже столкнулся с задачками, требующих элементарных навыков программирования, которых у меня, увы, нет.
В этом разделе форума уже был подобный вопрос, и я попробовал предложенный там вариант решения, но скрипт всё равно не работает.
Прошу помощи.
Мне нужно посчитать доверительные интервалы (Clopper-Pearson) - использую команду exactci(x, n, 95%) из пакета PropCIs для набора данных, которые представлены в виде матрицы с 2-мя столбцами (n, x).
Для одного x и одного n я могу посчитать, но как мне сделать так, чтобы автоматически посчитать для всей матрицы (где каждая строка - это пара n и x)?
Мой код выглядит так:

Код: Выделить всё

my_function<-function(a)
{
  exactci(x=a[,2], n=a[,1], 0.95)
}
apply(data1, 2, my_function)
, где
data1 - это матрица.

При выполнении команды apply - выходит ошибка:
Error in a[, 2] : incorrect number of dimensions

Спасибо

Иван Стрельников
Интересующийся
Сообщения: 40
Зарегистрирован: 11 авг 2011, 13:23
Репутация: 15

Re: Как повторять вычисление по строкам матрицы?

Сообщение Иван Стрельников » 12 фев 2016, 15:50

Попробуйте так:

Код: Выделить всё

my_function<-function(a)
{
  exactci(x=a[2], n=a[1], 0.95)
}
apply(data1, 1, my_function)
Первое, если я правильно понял, вам нужны ряды, следовательно в apply нужно указать 1.
Второе, applay передает в функцию вектор, а не матрицу -- это если на входе действительно матрица, а не датафрейм. Т.е. измерение одно (Вы обращались к значениям, как если бы это была матрица или датафрейм, т.е. запятые не нужны).

marratt
Интересующийся
Сообщения: 24
Зарегистрирован: 12 май 2012, 07:33
Репутация: 0

Re: Как повторять вычисление по строкам матрицы?

Сообщение marratt » 15 фев 2016, 07:54

Спасибо большое, пришёл на работу и попробовал Ваш код - заработало!

Ответить

Вернуться в «R»