2017-09-25 2 views
0

similaire à cette question: Adding prefixes to some variables without touching others?Affectation aux variables temporaires à l'intérieur de `chaîne de commandement maggritr`

J'ai essayé cette solution, mais ne partage pas parce que je ne suis pas sûr de ce qui se passe:

données:

df1 <- data.frame("hea_income"=c(45000,23465,89522),"gea_property"=c(1,1,2) ,"win_state"=c("AB","CA","GA"), "education"=c(1,2,3), "commute"=c(13,32,1)) 

solution :

names(df1) %<>% inset(tmp<-!grepl("_",.),paste0("important_",.)[tmp]) 
# hea_income gea_property win_state important_education important_commute 
# 1  45000   1  AB     1    13 
# 2  23465   1  CA     2    32 
# 3  89522   2  GA     3     1 

ma question:

tmp 
# Error: object 'tmp' not found 
names(df1) %<>% inset(tmp<-!grepl("_",.),paste0("important_",.)[tmp]) %>% {tmp} 
# Error in function_list[[k]](value) : object 'tmp' not found 

Je ne comprends pas tout à fait la façon de travailler avec des environnements magrittr et j'ai été agréablement surpris de voir que tmp ne pollue pas mon espace de travail, mais est-ce un coffre-fort entraine toi ? Ai-je effectivement stocké tmp quelque part où il gaspille de la mémoire?

Si ce n'est pas ce qui pourrait être un truc de nuit pour les tuyaux!

Répondre

0

je devais répondre à cette question: magittr pipe does not correctly pass a connection ...

... pour réaliser que je pouvais résoudre ce moi-même mes

J'assignerons l'environnement local de la dernière commande et lui attribuer à l'environnement mondial, je vais explorer ce:

library(magrittr) 
df1 <- data.frame("hea_income"=c(45000,23465,89522),"gea_property"=c(1,1,2) ,"win_state"=c("AB","CA","GA"), "education"=c(1,2,3), "commute"=c(13,32,1)) 
names(df1) %<>% {assign("scary_place",environment(),envir=globalenv());inset(.,tmp<-!grepl("_",.),paste0("important_",.)[tmp])} 

maintenant, nous allons voir:

ls(scary_place) 
#[1] "tmp" 

Alors oui, c'était en désordre, ne le faites pas! (dommage ...)