Предположим, что набор данных, в котором 10 участников заполнили анкету с тремя элементами, x, y и z.R: apply() function in with() function
ss <- data.frame(x=rnorm(10), y=rnorm(10), z=rnorm(10))
Я хочу вычислить среднее значение этих предметов для каждого человека (личное значение). я могу легко сделать это таким образом:
ss$personalmean <- rowMeans(ss[c("x", "y", "z")])
или так:
ss$personalmean <- apply(ss[c("x", "y", "z")], 1, mean)
Но предположим, что я хочу быть в состоянии сделать это в с функцией. Тогда я сталкиваюсь с проблемами.
Это работает:
with(ss, (x+y+z)/3)
Но это не делает:
with(ss, rowMeans(c(x,y,z)))
with(ss, apply(c(x,y,z), 1, mean))
Я не понимаю, почему. Пример здесь тривиален, но, короче говоря, я хотел бы использовать функцию apply()
в функции with()
.
Извините, если кто-то опубликовал хороший ответ на этот вопрос где-то, но поиск в googling, что я ищу, нелегко, учитывая, что «с» - довольно общий термин.
Оба 'apply' и' rowMeans' работу над матрицами. Является ли 'c (x, y, z)' похожим на матрицу? – Frank
Вам нужно 'cbind' вместо' c' – akrun
@akrun, спасибо за этот ответ. Не могли бы вы принять его в качестве ответа, чтобы я мог его принять. – msoftrain