Я полагаю, что это основная проблема, которая вообще не относится к purrr
, но застала меня врасплох в этом контексте. Общий ответ был бы хорош, если бы речь не шла о том, как purrr
и dplyr
играют вместе.
Я пытался назвать переменную, которую я "отображал", так же, как переменную в d.f. Я хотел соответствовать, и это привело к проблемам . Может кто-нибудь объяснить, почему моя первая попытка создать парные различия не удалась?
Это похоже на проблему с изменяемой областью видимости или что-то с избыточными именами, но я не знаю точно, что не так. Очевидно, я нашел обходной путь.
Представьте, что у меня есть данные типа mydf
ниже и много переменных, и я хочу вычислить разницу в значениях этих переменных для каждой пары сайтов:
#four sites
site<-rep(c("j", "k", "l", "m"), 3)
#some measurment
val<-1:12
#some variable
vari<-c(rep(1,4), rep(2, 4), rep(3,4))
mydf<-data.frame(site, val, vari)
#compute pairwise differences between values at each site for each variable
outp<-map_dfr(1:3, function(vari){
dists<-as.numeric(dist(mydf %>% filter(vari==vari) %>% select(val), method="manhattan"))
names(dists)<-c("jk","jl", "jm", "kl", "km", "lm" )
dists
return(data.frame(t(dists), vari=vari))
})
# looks like there was an issue with using "vari"
outp
#but use a different name for the same variable and it works fine
outp2<-map_dfr(1:3, function(a){
dists<-as.numeric(dist(mydf %>% filter(vari==a) %>% select(val), method="manhattan"))
names(dists)<-c("jk","jl", "jm", "kl", "km", "lm" )
dists
return(data.frame(t(dists), vari=vari))
})
outp2
edit , как отмечено в комментариях и ответах ниже, проблема здесь заключается в использовании переменной в dplyr::filter
, а не в purrr