Я хочу разбить строку в сценарии 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
ключом в конце первой строки; но это не работает.
Спасибо.
paste0
еще не существовало, когда я написал ответ 2+ года назад.Бах, комментарии слишком малы. Во всяком случае, @Dirk очень прав.
R не нужно сообщать, что код начинается со следующей строки. Он умнее, чем Python ;-) и просто продолжит читать следующую строку всякий раз, когда он считает это выражение «не завершенным». На самом деле, в вашем случае он также перешел на следующую строку, но R принимает возврат как символ, когда он находится между "".
Имейте в виду, вы должны убедиться, что ваш код не закончен. сравнить
с участием
Таким образом, при распределении кода по нескольким строкам вы должны убедиться, что R знает, что что-то идет, либо:
Когда мы говорим о строках, это все еще работает, но вы должны быть немного осторожнее. Вы можете открыть кавычки, и R будет читать, пока вы не закроете его. Но каждый символ, включая символ новой строки, будет рассматриваться как часть строки:
Вот почему в этом случае ваш код не работал: путь не может содержать символ новой строки (
\n
). Так что также объясняет , почему лучше использовать решение сpaste()
илиpaste0()
предложенным Dirk.источник
paste("~one",\n"/two")
просто нужно("~one" \n "/two")
. бросьте запятые иpaste
. Не смотря язык шлепает. Я использую оба языка, но всегда, хотя вставка была раздражением.("one"\n "/one.one" # some comment\n "/two")'
примеры в stackoverflow.com/questions/10660435/…leaving a bracket open, or ending the line with an operator
эти два пути.Приведенный выше метод Дирка будет абсолютно работать, но если вы ищете способ ввести длинную строку, в которой важно сохранить пробел / структуру (например, SQL-запрос с использованием RODBC), есть двухэтапное решение.
1) Перенесите текстовую строку в несколько строк
2) R представит кучу
\n
символов. Удалите теstrwrap()
, которые уничтожают пробелы, согласно документации :Сказав strwrap обернуть ваш текст в очень, очень длинную строку, вы получите односимвольный вектор без пробелов и символов новой строки.
источник
strwrap
может возвращать вектор из нескольких строк, даже если исходная строка не превышает 10 000 символов. Попробуйstrwrap("a\n\nb")
. Он вернет вектор длины 3, и вам нужно вставить его обратно, используяpaste(strwrap("a\n\nb"), collapse=" ")
пробел для склеивания вектора.Для этого конкретного случая есть
file.path
:источник
Я знаю, что этот пост старый, но у меня была такая ситуация, и я просто хочу поделиться своим решением. Все ответы выше работают нормально. Но если у вас есть такой код, как в Синтаксисе цепочек data.table, это становится сложным делом. Например, у меня была такая проблема.
mass <- files[, Veg:=tstrsplit(files$file, "/")[1:4][[1]]][, Rain:=tstrsplit(files$file, "/")[1:4][[2]]][, Roughness:=tstrsplit(files$file, "/")[1:4][[3]]][, Geom:=tstrsplit(files$file, "/")[1:4][[4]]][
time_ [с]<=12000]
Я попробовал большинство предложений выше, и они не сработали. но я понял, что их можно разделить запятой внутри
[]
. Расщепление][
не работает.источник