Подмножество факторов в R петле - PullRequest
0 голосов
/ 07 ноября 2011

У меня возникли проблемы с подмножеством данных в циклах for.Вот иллюстративный пример:

x<-rnorm(n=40, m=0, sd=1)
y<-rep(1:5, 8)
df<-as.data.frame(cbind(x,y))
df_split<-split(df, df$y)
mean_vect<-rep(-99, 5)

for (i in c(1:5)) {
current_df<-df_split$i
mean_vect[i]<-mean(current_df)
}

`

Этот подход не работает, потому что я думаю, что R ищет разделение под названием" i ", когда я действительно хочу, чтобы он вытащил ihТрещина!Я также попробовал функцию подмножества с небольшой радостью.Я всегда сталкиваюсь с этими проблемами, когда пытаюсь разделить нечисловой множитель, поэтому любая помощь будет признательна

Ответы [ 2 ]

3 голосов
/ 07 ноября 2011

К вашему сведению, функциональные возможности для этого обычно выполняются с использованием tapply

tapply( df$x, df$y, mean )

Первый аргумент указывает значение, которое вы хотите "означать-группой".Второй - это просто INDEX, то есть переменная, которая разделяет ваши группы, а последняя - это, очевидно, функция, которую вы хотите запустить в этих группах, в данном случае означает.

1 голос
/ 07 ноября 2011

Чтобы получить разделенное число i, запустите

df_split[[i]]

Кстати, поскольку ваша конечная цель - mean_vect, лучше использовать

mean_vect <- lapply(df_split, mean)

или:

mean_vect <- tapply(df$x, df$y, mean)
mean_vect
        1          2          3          4          5 
0.2566810 -0.1528079 -0.2097333 -0.1540343  0.3609312 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...