Страница 1 из 1

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

Добавлено: 12 фев 2016, 10:45
marratt
Здравствуйте.
Я в 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

Спасибо

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 передает в функцию вектор, а не матрицу -- это если на входе действительно матрица, а не датафрейм. Т.е. измерение одно (Вы обращались к значениям, как если бы это была матрица или датафрейм, т.е. запятые не нужны).

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

Добавлено: 15 фев 2016, 07:54
marratt
Спасибо большое, пришёл на работу и попробовал Ваш код - заработало!