Perché non funziona?Perché a volte devo racchiudere `.` in` data.frame() `per un argomento con nome in` do`?
data.frame(x = rnorm(100)) %>% do(df = .)
Messaggio di errore:
Error in do_(.data, .dots = lazyeval::lazy_dots(...)) :
argument ".data" is missing, with no default
Invece, devo racchiudere il .
in data.frame()
:
data.frame(x = rnorm(100)) %>% do(df = data.frame(.))
In alternativa, questo funziona anche:
data.frame(x = rnorm(100)) %>% do(., df = .)
L'esempio, ovviamente, non ha senso. Ma può essere utile salvare lo data.frame
come variabile di lista quando si lavora con group_by
.
Qui è un problema più complesso che sembra essere correlato:
library("MatchIt")
n <- 5000
DF <- data.frame(
x1 = rnorm(n),
x2 = rbinom(n, 1, 0.5),
group = rbinom(n, 1, 0.5),
D = rbinom(n, 1, 0.5))
Ora, questo produce un errore:
DF %>%
group_by(group) %>%
do(m = matchit(D ~ x1, data = ., exact = "x2"))
ma funziona quando allego il .
in data.frame()
:
DF %>%
group_by(group) %>%
do(m = matchit(D ~ x1, data = data.frame(.), exact = "x2"))
Non sono sicuro se il secondo esempio con matchit
è correlato ma in entrambi i casi devo includere lo .
in data.frame()
.
sessionInfo()
> sessionInfo()
R version 3.1.1 (2014-07-10)
Platform: x86_64-apple-darwin13.4.0 (64-bit)
locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] MatchIt_2.4-21 MASS_7.3-33 dplyr_0.4.1 Defaults_1.1-1
loaded via a namespace (and not attached):
[1] assertthat_0.1 DBI_0.3.1 lazyeval_0.1.10 magrittr_1.5 parallel_3.1.1 Rcpp_0.11.4 tools_3.1.1
Il comando 'mtcars%>% group_by (cil)%>% do (mod = lm (mpg ~ vs, data =.))' Funziona? –
Sì, funziona. Nel secondo esempio, il problema si verifica anche in diverse circostanze particolari (quando utilizzo l'argomento 'exact'). Parte delle mie domande quando e perché devo includere '.' in' data.frame() 'o se si tratta di un problema con il mio setup. Grazie! – user2503795
Il secondo problema non è in realtà correlato al primo, poiché non è correlato a 'do': è perché' matchit' non funziona su 'tbl_df's. Prova 'matchit (D ~ x1, data = tbl_df (DF), exact =" x2 ")', ad esempio - ottiene lo stesso errore. –