2014-10-22 7 views
0
s <- split (x, x$factor) 
s[[1]] 

Поэтому я хотел был бы иметь возможность использовать это подмножество факторов с lapply. Ниже приведен макет кода, имитирующий то, что я пытался сделать.Факторы подмножества в R

meanfunction <-lapply(s[[1]],function(x) colMeans(x[, c("col1","col2")])) 

Но это не работает. Поэтому, хотя я бы был умным и попытался обмануть R и связать новую переменную t<-s[[1]], а затем использовать ее в функции, но, увы, она тоже не работает. В любом случае я получаю такое же сообщение об ошибке.

Error in x[, c("col1", "col2")] : incorrect number of dimensions 

Но код отлично работает при оценке в целом. Есть предположения? Благодарю.

Edit: х является data.frame с 4 столбцами Character, числовой, цифровой, фактор

+1

's [[1]]' является фреймом данных, поэтому вызов 'lapply' на нем запускает' colMeans' в каждом столбце, который не работает –

+0

@RichardScriven - это хорошо? – nzaleski

+0

@RichardScriven Даже когда я указываю столбцы? Есть ли для этого какая-то работа? – nzaleski

ответ

1

dplyr является отличным выбором для такого рода работы, предполагая, что я правильно понял вашу цель. Вот пример:

library(dplyr) 
x = tbl_df(data.frame(factor = factor(c(rep("A", 3), rep("B", 4))), value = 1:7)) 
group_by(x, factor) %>% summarise(mean = mean(value)) 

Вы можете узнать больше о dplyrhere.

+0

Вы можете использовать 'summaryise_each' для более чем 1 колонки. С точки зрения OP, я думаю, что есть несколько столбцов. – akrun

Смежные вопросы