Pregunta

Al principio de mi vida en R, descubrí el dolor de que R y Windows estuvieran en diferentes páginas cuando se trataba del separador entre directorios y subdirectorios. Aunque conozco el problema, todavía me duele tener que colocar manualmente una barra invertida frente a todas mis barras invertidas o reemplazarlas todas con barras diagonales.

Me encanta copiar un nombre de ruta o un nombre de archivo completo con cualquiera de las varias aplicaciones que tengo en mi computadora (por ejemplo, XYPlorer, Everything by voidtools) y luego pegarlo en Tinn-R. ¿Hay alguna forma de que pueda automatizar la tarea que estoy haciendo manualmente?

  • ¿Hay algún ajuste en Tinn-R?
  • ¿Hay un ajuste en R?
  • ¿Existe un script de autohotkey que podría hacerlo por mí de forma predeterminada?

Fondo para aquellos que no saben de qué estoy hablando

Cita de R para Windows Preguntas frecuentes, Versión para R-2.9.2, B. D. Ripley y D. J. Murdoch

  

Las barras invertidas deben duplicarse en R   cadenas de caracteres, así que por ejemplo uno   necesariamente   `" d: \ R-2.9.2 \ library \ xgobi \ scripts \ xgobi.bat " '.   Puedes hacerte la vida más fácil   utilizando barras diagonales como ruta   separadores: funcionan bajo Windows

¿Fue útil?

Solución

Escribí un script autohotkey que se activa al escribir " rfil " - Sin las comas invertidas.

:O:rfil:: ;replaces backslashes with forward slashes in a file name that is stored on the clipboard
StringReplace,clipboard,clipboard,\,/,All
send %clipboard%
return

Si alguien me puede decir una manera más rápida que usando el comando de envío, lo apreciaría. Tengo una secuencia de comandos autohotkey ejecutándose todo el tiempo en todas mis computadoras, por lo que no tuve que descargar software nuevo para ejecutar esta secuencia de comandos. Simplemente lo agregué a mi archivo de script predeterminado.

Estaré encantado de explicarte lo que hice si quieres que lo haga.

Otros consejos

ClipPath agrega opciones de menú con el botón derecho para elegir el tipo de barra que desee para pegar.

A través de Obtención de la genética hecha , que parece que podría ser un recurso útil para los usuarios de R en general.

He adaptado el siguiente código autohotkey compartido para reemplazar todas las barras invertidas con barras diagonales siempre que pegue algo en RStudio. Hay ventajas y desventajas en este enfoque.

Pros: No tienes que pensar en ello. El código solo se ejecutará si la ventana activa es RStudio.

Contras: el código se llama cada vez que pegas algo en R. Cada vez que intenta encontrar barras invertidas y reemplazarlos con barras diagonales.

GroupAdd, R, RStudio

;replaces backslashes with forward slashes in a file name that is stored on the clipboard
#IfWinActive ahk_group R
   ^v::
      StringReplace,clipboard,clipboard,\,/,All
      send %clipboard%
   return
#IfWinActive

Yo uso la búsqueda & amp; Reemplace, pero, por supuesto, no es completamente automático y debe tener cuidado de no reemplazar " \ t " o " \ n " ;.

No es exactamente la respuesta que está buscando, pero R tiene sus propias funciones de shell scripting que a menudo uso:

list.files (, full = TRUE) [devuelve la ruta completa con los separadores apropiados]

file.path () [se une con un separador específico del sistema operativo]

y así sucesivamente ...

Podrías crear una función de envoltorio alrededor de todos los nombres de ruta:

> replace.slash <- function(path.name) gsub("\\\\","/",path.name)
> path.name <- "c:\\tmp\\"
> replace.slash(path.name)
[1] "c:/tmp/"

[Editar]: Gracias, Hadley. Corrigí el error allí.

Por cierto, encontré esto muy discusión útil sobre este tema .

Este es el código AutoIt que hace lo mismo (reemplaza a \ con / ).

Local $text1 = ClipGet()
$text2=StringReplace($text1,"\","/")
ClipPut($text2)

¿por qué no crear una función que verifique el sistema operativo y devuelva el separador de archivos adecuado (creo que la solución Java)?

file_sep <- function(){
ifelse(.Platform$OS.type == "unix", "/", "//")
}
file_sep()

puedes elegir un nombre más corto si quieres. La gran falla aquí es que tienes que pegar las rutas de los archivos, pero a la larga vale la pena si estás trabajando en grandes proyectos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top