Разделить код на несколько строк в 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 не должно заботиться.