Разделите ваши данные на два кадра данных, один для элементов управления и один для вмешательств, а затем объедините их вместе.
df
study group_allocation outcome bl_mean fu_timepoint fu_mean mean_diff
1 Smith, 1999 intervention_1 depression 6.5 6 5.2 -2.3
2 Smith, 1999 control depression 4.5 6 7.5 NA
3 Jones, 1996 intervention_1 anxiety 3.7 12 2.5 -3.8
4 Jones, 1996 intervention_2 anxiety 4.2 12 2.7 -3.6
5 Jones, 1996 control anxiety 5.3 12 6.3 NA
interventions<-df[grep("intervention", df$group_allocation),]
interventions
study group_allocation outcome bl_mean fu_timepoint fu_mean mean_diff
1 Smith, 1999 intervention_1 depression 6.5 6 5.2 -2.3
3 Jones, 1996 intervention_1 anxiety 3.7 12 2.5 -3.8
4 Jones, 1996 intervention_2 anxiety 4.2 12 2.7 -3.6
controls<-df[grep("control", df$group_allocation),]
controls
study group_allocation outcome bl_mean fu_timepoint fu_mean mean_diff
2 Smith, 1999 control depression 4.5 6 7.5 NA
5 Jones, 1996 control anxiety 5.3 12 6.3 NA
names(controls)<-paste0("cg_", names(controls)) #add cg prefix to colnames
new_df<-merge(interventions, controls, by.x="study", by.y="cg_study", all.x=TRUE)
new_df
study group_allocation outcome bl_mean fu_timepoint fu_mean mean_diff cg_group_allocation cg_outcome cg_bl_mean cg_fu_timepoint cg_fu_mean cg_mean_diff
1 Jones, 1996 intervention_1 anxiety 3.7 12 2.5 -3.8 control anxiety 5.3 12 6.3 NA
2 Jones, 1996 intervention_2 anxiety 4.2 12 2.7 -3.6 control anxiety 5.3 12 6.3 NA
3 Smith, 1999 intervention_1 depression 6.5 6 5.2 -2.3 control depression 4.5 6 7.5 NA
Самый большой глюк, чтобы не упустить - то, что часто 'это' не определяется во встроенном закрытии. Иногда можно установить 'это', но это - не всегда право 'это', что Вы имели бы в наличии для установки, в зависимости от того, как Вы используете их.
Но я сказал бы, что большая часть кода Flex, я продолжил работать, имела встроенные закрытия rampantly всюду по коду - так как обратные вызовы являются единственным способом получить работу, сделанную, и часто Вам не нужно то, чтобы приносить целую отдельную функцию.
Иногда, когда вложенная функция добирается, чтобы быть слишком много, я выломаю ее немного с Функциональными переменными в функции; это помогает мне организовать немного путем предоставления маркировок функциям, но хранения некоторых характеристик встроенных закрытий (доступ к локальным переменным, например).
Надеюсь, это поможет.
Одна дополнительная проблема состоит в том, что сборка "мусора" повреждается когда дело доходит до закрытий (по крайней мере, в Flash 9). Первая инстанция данного закрытия (с лексической точки зрения) никогда не будет собираться "мусор" - наряду ни с чем больше ссылаемым закрытием в цепочке объема.
Я нашел то, что первоначально заставило меня не хотеть делать это, но я забыл детали:
http://livedocs.adobe.com/flex/3/html/16_Event_handling_6.html#119539
(Это - то, что Mitch упомянул - до 'этого' ключевого слова, являющегося из объема),
Таким образом, это - ответ Adobe, однако я буду должен, намного более вероятно, обратиться к локальным переменным, чем 'это'.
Как другие интерпретируют рекомендацию Adobe?