Пример Aggregate () в R

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

Вот один из примеров:

1> aggregate(state.x77, list(Region = state.region), mean)
         Region Population Income Illiteracy Life Exp Murder HS Grad  Frost   Area
1     Northeast       5495   4570      1.000    71.26  4.722   53.97 132.78  18141
2         South       4208   4012      1.738    69.71 10.581   44.34  64.62  54605
3 North Central       4803   4611      0.700    71.77  5.275   54.52 138.83  62652
4          West       2915   4703      1.023    71.23  7.215   62.00 102.15 134463

Вывод именно такой, как я ожидал. Поэтому я пытаюсь понять, что происходит. Я смотрю на state.x77

1> head(state.x77)
           Population Income Illiteracy Life Exp Murder HS Grad Frost   Area
Alabama          3615   3624        2.1    69.05   15.1    41.3    20  50708
Alaska            365   6315        1.5    69.31   11.3    66.7   152 566432
Arizona          2212   4530        1.8    70.55    7.8    58.1    15 113417
Arkansas         2110   3378        1.9    70.66   10.1    39.9    65  51945
California      21198   5114        1.1    71.71   10.3    62.6    20 156361
Colorado         2541   4884        0.7    72.06    6.8    63.9   166 103766

Хорошо, это для меня странно. Я ожидал увидеть столбец в state.x77 с именем state.region или что-то в этом роде. Итак, state.region должен быть отдельным объектом. Поэтому я использую str () для этого:

1> str(state.region)
 Factor w/ 4 levels "Northeast","South",..: 2 4 4 2 4 4 1 2 2 2 ...

Похоже, что state.region - это всего лишь фактор. Каким-то образом ДОЛЖНА быть связь между state.region и state.x77, чтобы aggregate () сгруппировал state.x77 по state.region. Но эта связь для меня загадка. {если (a

Ниже приводится упрощенная версия шаблона, который я иногда вижу в коде моих учеников:

bool foobar(int a, int b)
{
    if (a < b) return true;
}

Настоящий код, конечно, более сложен. Visual Studio сообщает о предупреждении C4715 ( не все пути управления возвращают значение ), и я хотел бы рассматривать все предупреждения C4715 как ошибки. Возможно ли это?

15
задан fredoverflow 20 January 2011 в 18:16
поделиться