Следующий код отлично работает на моем Mac с использованием CRAN R:
delta_scores <- function(df, data_var) {
# Use Hadley's new non-standard evaluation helpers to compute differences in
# the symbol passed through data_var from Session 1 to 2. Assumes an ID column
# in df that groups units of measurement.
# For the RHS:
quo_data_var <- enquo(data_var)
# For the LHS, we need yet another step (basically a string)
name_data_var <- quo_name(quo_data_var)
df %>% select(ID, Session, !!quo_data_var) %>%
# NSE spread stopped working on my windows machine!
spread(Session, !!quo_data_var) %>%
# Note use of := instead of plain = to support NSE
transmute(ID=ID, !!name_data_var := `2`-`1`)
}
test_df <- data_frame(ID=c(1,2,3,1,2,3),
Session=c(1,1,1,2,2,2),
Measure=c(1,2,3,1,1,4))
delta_scores(test_df, Measure)
Но когда я запускаю его в Windows, Microsoft R Open 3.4.2, dplyr 0.7.3, я получаю:
Error: Invalid column specification
ПРИМЕЧАНИЕ: это легко исправить, заменив spread
на spread_('Session', name_data_var)
. Интересно, что вызов select
работает нормально (мои настоящие фреймы данных имеют много столбцов). Меня беспокоит более серьезная проблема, заключающаяся в том, что NSE dplyr не работает в данной среде.
Просмотр трассировки стека отладчика был достаточно устрашающим, поэтому я решил сначала попросить о помощи здесь. Мы очень ценим любые идеи о том, что происходит, или идеи о том, как это отлаживать!
0.7.4
работает нормально - person akrun   schedule 21.11.2017