Je ne connaissais pas le raccourci F2, j'ai donc créé mon propre raccourci en utilisant la fonction rstudioapi
que je trouve supérieur maintenant que j'ai mis à jour Rstudio.
Vous trouverez les détails ici sur la façon de lier une fonction à la liste des raccourcis de Rstudio. Pour créer et persister un raccourci en utilisant ce paquet, je comprends qu'il doit faire partie d'un paquet que vous avez installé (instructions dans le lien), donc vous devrez le configurer. Je l'ai fait, mais le paquetage n'est pas publié, vous devez donc créer votre propre paquetage ou l'ajouter à un paquetage existant. Une fois qu'il est configuré, le paquet ne doit pas être chargé pour utiliser le raccourci de fonction.
Mon view
fait ce qui suit : il saisit le texte de la ligne entière sur laquelle se trouve le curseur et appelle view
avec elle comme argument.
Cela fonctionne alors lorsque vous avez effectué un filtrage ou un sous-ensemble sur les données. J'utilise data.table
donc souvent j'aurai quelque chose comme iris[, sum(Sepal.Width), by=.(Species)]
. Avec mon raccourci, je peux placer le curseur n'importe où sur cette ligne, appuyer sur le raccourci et afficher le résultat. data.table
. Cela ne fonctionnerait pas sur une ligne multiple dplyr
mais on pourrait peut-être l'élargir d'une certaine manière.
Edit : c'est supérieur parce que le raccourci F2 ne semble fonctionner que sur un ordinateur non modifié. data.frame
( data.table
etc.) lorsque le curseur se trouve immédiatement avant, après ou à l'intérieur du texte.
Voici la fonction :
viewshortcut <- function(){
dr123 <- rstudioapi::getActiveDocumentContext()
row786 <- dr123$selection[[1]]$range$end[1]
end786 <- dr123$selection[[1]]$range$end
dr123 <- rstudioapi::document_range(
start = rstudioapi::document_position(row = row786, column = 1),
end = rstudioapi::document_position(row = row786, column = 1000)
)
dr123 <- rstudioapi::setSelectionRanges(dr123)
dr123 <- rstudioapi::getActiveDocumentContext()
dr123 <- dr123$selection[[1]]$text
dr123 <- paste0("View(", dr123, ")")
print(dr123)
eval(parse(text=dr123))
}