Разделить код на несколько строк в R script
Я хочу разбить строку в R script на несколько строк (потому что она слишком длинная). Как это сделать?
В частности, у меня есть строка, такая как
setwd('~/a/very/long/path/here/that/goes/beyond/80/characters/and/then/some/more')
Можно ли разделить длинный путь на несколько строк? Я попробовал
setwd('~/a/very/long/path/here/that/goes/beyond/80/characters/and/
then/some/more')
с ключом return
в конце первой строки; но это не работает.
Спасибо.
Ответы
Ответ 1
Вы не нарушаете код по нескольким строкам, а скорее по одному идентификатору. Есть разница.
Для вашей проблемы попробуйте
R> setwd(paste("~/a/very/long/path/here",
"/and/then/some/more",
"/and/then/some/more",
"/and/then/some/more", sep=""))
который также иллюстрирует, что отлично разбить код на несколько строк.
Ответ 2
Ба, комментарии слишком малы. Во всяком случае, @Dirk очень прав.
R не нужно сообщать, что код начинается со следующей строки. Это умнее, чем Python;-), и будет просто продолжать читать следующую строку, когда он считает утверждение "незавершенным". Фактически, в вашем случае она также переходила к следующей строке, но R принимает значение возврата в качестве символа, когда оно помещается между "".
Помните, что вам нужно будет убедиться, что ваш код еще не закончен. Сравнить
a <- 1 + 2
+ 3
с
a <- 1 + 2 +
3
Итак, при распространении кода на несколько строк вы должны убедиться, что R знает, что что-то приходит, либо:
- открытие открытой скобки или
- завершение строки оператором
Когда мы говорим о струнах, это все еще работает, но вам нужно быть немного осторожным. Вы можете открыть кавычки, и R будет читать до тех пор, пока вы его не закроете. Но каждый символ, включая новую строку, будет рассматриваться как часть строки:
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.
Вот почему в этом случае ваш код не работал: путь не может содержать символ новой строки (\n
). Итак, почему вы лучше используете решение с предложением paste()
или paste0()
Dirk.
Ответ 3
Метод Dirk, приведенный выше, будет абсолютно работать, но если вы ищете способ ввода длинной строки, где важно сохранить пробел/структуру (например: SQL-запрос с использованием RODBC), существует двухэтапное решение.
1) Приведите текстовую строку в несколько строк
long_string <- "this
is
a
long
string
with
whitespace"
2) R представит пучок символов \n
. Разделите их с помощью strwrap()
, который уничтожает пробелы в документации :
strwrap(long_string, width=10000, simplify=TRUE)
Говоря strwrap, чтобы обернуть текст в очень длинную строку, вы получите один символ символа без символов пробелов/символов новой строки.
Ответ 4
В этом конкретном случае есть file.path
:
File <- file.path("~",
"a",
"very",
"long",
"path",
"here",
"that",
"goes",
"beyond",
"80",
"characters",
"and",
"then",
"some",
"more")
setwd(File)
Ответ 5
На маке вы можете нажать:
⎇ and return
Это позволит вам вводить команду на несколько строк, а R не должно заботиться.