Bu neden çalışmıyor?Neden bazen `do`daki bir argüman için` .` `` data.frame() `ın içine almak zorundayım?
data.frame(x = rnorm(100)) %>% do(df = .)
Hata mesajı:
data.frame(x = rnorm(100)) %>% do(df = data.frame(.))
Alternatif olarak, bu da çalışır:
data.frame(x = rnorm(100)) %>% do(., df = .)
012 yerine
Error in do_(.data, .dots = lazyeval::lazy_dots(...)) :
argument ".data" is missing, with no default
, ben .
data.frame()
içinde girilir zorunda
Örnek, elbette, mantıklı değil. Ancak, group_by
ile çalışırken, data.frame
listesini değişken olarak kaydetmek yararlı olabilir.
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))
Şimdi bu bir hata üretir: Burada
ilişkili görünmektedir daha karmaşık bir sorundurDF %>%
group_by(group) %>%
do(m = matchit(D ~ x1, data = ., exact = "x2"))
Ama .
data.frame()
içinde girilir zaman çalışır:
DF %>%
group_by(group) %>%
do(m = matchit(D ~ x1, data = data.frame(.), exact = "x2"))
ile ikinci örnek olup olmadığından emin değilimilişkilidir, ancak her iki durumda da .
'u data.frame()
içine kapatmam gerekiyor.
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
'mtcars%>% group_by (silindir)%>% do (mod = İm (MPG ~ v, veri =.)) 'Çalışıyor mu? –
Evet, işe yarıyor. 2. örnekte, problem, belirli durumlarda (“kesin” argümanını kullandığımda) ortaya çıkar. Sorularımın bir kısmı ne zaman ve neden '' '' data.frame() 'ın içine yerleştirmem gerektiğini ya da kurulumumda bir sorun olup olmadığını. Teşekkürler! – user2503795
İkinci sorun, aslında 'do' ile ilgili olmadığı için birinciyle ilgili değil: çünkü' matchit 'tbl_df's üzerinde çalışmıyor. Matchit'i (D ~ x1, data = tbl_df (DF), kesin = "x2") deneyin, örneğin aynı hatayı alır. –