Я хотел бы назначить многострочную строку переменной в R, чтобы позже ее можно было вызвать. Когда я пытаюсь paste("line 1", "line 2", sep = "\n")
Я получаю "line 1\nline 2"
. Когда я попробую cat("line 1", "line 2", sep = "\n")
, я получаю желаемый результат, но это вывод не является постоянным (cat()
возвращает объект типа None
). Причина, по которой я пытаюсь использовать многострочную строку, заключается в том, что мне нужно отправить результаты запроса через SMTP-сервер (и пакет sendmailR
) в тело сообщения (а не как вложение).Создать постоянную многострочную строку
3
A
ответ
10
paste("line 1", "line 2", sep = "\n")
это правильный путь, вы получите то, что вы хотели:
> a = paste("line 1", "line 2", sep = "\n")
> cat(a)
line 1
line 2>
Ваше замешательство, вероятно, исходит из того, что print
ускользает выход, поэтому печатает строку так, как можно было бы ожидать от пар.:
> print(a)
[1] "line 1\nline 2"
Обратите внимание на цитаты вокруг строки. cat
печатает выход как есть. В обоих случаях объект одинаков, это только формат вывода, который отличается.
Очевидно, что вы можете создать строку непосредственно без paste
:
> a = "line1\nline2"
> cat(a)
line1
line2>
дам предложил ваше решение попробовать завтра (когда у меня есть доступ к серверу SMTP, который я использую), но я немного скептически, что он будет работать. Моя проблема звучит примерно так: http://stackoverflow.com/questions/6889862/sweave-rweavehtml-cat-output-does-not-appear-in-the-output. Функция 'cat()' не кажется постоянной; когда я пытаюсь передать его в аргумент 'msg' named в' sendmail() ', я получаю электронное письмо с пустым телом (и выражение' cat' выводится на консоль). – Jubbles
@Jubbles Вы знаете, что 'cat' не возвращает значение, правильно? Он отправляет текст в файл или соединение. Убедитесь, что вы пытаетесь передать необработанный символ '' line1 \ nline2 "' в аргумент 'msg'. – joran
@joran: Я знаю, что 'cat' не возвращает значение. ('cat()' возвращает объект типа 'None'). Я попробую просто передать сырого персонажа. – Jubbles