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