studio - superponer graficas en r
Dividir el código en varias líneas en un guión R (5)
Bah, los comentarios son demasiado pequeños. De todos modos, @Dirk tiene mucha razón.
R no necesita que se le diga que el código comienza en la siguiente línea. Es más inteligente que Python ;-) y continuará leyendo la siguiente línea siempre que considere que la declaración es "no terminada". En realidad, en su caso también pasó a la siguiente línea, pero R toma la devolución como un personaje cuando se coloca entre "".
Eso sí, tendrás que asegurarte de que tu código no esté terminado. Comparar
a <- 1 + 2
+ 3
con
a <- 1 + 2 +
3
Por lo tanto, al distribuir código en múltiples líneas, debe asegurarse de que R sepa que algo está por venir, ya sea por:
- dejando un soporte abierto, o
- terminando la línea con un operador
Cuando estamos hablando de cadenas, esto todavía funciona pero debes ser un poco cuidadoso. Puede abrir las comillas y R continuará leyendo hasta que lo cierre. Pero cada personaje, incluida la nueva línea, se verá como parte de la cadena:
x <- "This is a very
long string over two lines."
x
## [1] "This is a very/nlong string over two lines."
cat(x)
## This is a very
## long string over two lines.
Esa es la razón por la cual en este caso, su código no funcionó: una ruta no puede contener un carácter de nueva línea ( /n
). Así que también es por eso que es mejor utilizar la solución con paste()
o paste0()
Dirk propuesto.
Quiero dividir una línea en una secuencia de comandos R en varias líneas (porque es demasiado larga). ¿Cómo puedo hacer eso?
Específicamente, tengo una línea como
setwd(''~/a/very/long/path/here/that/goes/beyond/80/characters/and/then/some/more'')
¿Es posible dividir el largo camino en múltiples líneas? Lo intenté
setwd(''~/a/very/long/path/here/that/goes/beyond/80/characters/and/
then/some/more'')
con la tecla de return
al final de la primera línea; Pero eso no funciona.
Gracias.
El método anterior de Dirk funcionará completamente, pero si está buscando una forma de traer una cadena larga donde el espacio en blanco / estructura es importante para preservar (ejemplo: una consulta SQL usando RODBC) hay una solución de dos pasos.
1) Trae la cadena de texto en varias líneas
long_string <- "this
is
a
long
string
with
whitespace"
2) R presentará un grupo de /n
caracteres. strwrap()
con strwrap()
, que destruye el espacio en blanco, según la documentation :
strwrap(long_string, width=10000, simplify=TRUE)
Al decirle a strwrap que envuelva su texto en una fila muy, muy larga, obtendrá un vector de un solo carácter sin espacios en blanco / caracteres de nueva línea.
En el mac, puedes golpear:
⎇ and return
Esto le permitirá ingresar un comando en varias líneas y R no debería importarle.
No está rompiendo el código en varias líneas, sino en un único identificador . Hay una diferencia.
Para tu problema, prueba
R> setwd(paste("~/a/very/long/path/here",
"/and/then/some/more",
"/and/then/some/more",
"/and/then/some/more", sep=""))
que también ilustra que está perfectamente bien romper el código en múltiples líneas.
Para ese caso particular, hay file.path
:
File <- file.path("~",
"a",
"very",
"long",
"path",
"here",
"that",
"goes",
"beyond",
"80",
"characters",
"and",
"then",
"some",
"more")
setwd(File)