2012-01-31 4 views
3

Я хотел бы назначить многострочную строку переменной в R, чтобы позже ее можно было вызвать. Когда я пытаюсь paste("line 1", "line 2", sep = "\n") Я получаю "line 1\nline 2". Когда я попробую cat("line 1", "line 2", sep = "\n"), я получаю желаемый результат, но это вывод не является постоянным (cat() возвращает объект типа None). Причина, по которой я пытаюсь использовать многострочную строку, заключается в том, что мне нужно отправить результаты запроса через SMTP-сервер (и пакет sendmailR) в тело сообщения (а не как вложение).Создать постоянную многострочную строку

ответ

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> 
+0

дам предложил ваше решение попробовать завтра (когда у меня есть доступ к серверу SMTP, который я использую), но я немного скептически, что он будет работать. Моя проблема звучит примерно так: http://stackoverflow.com/questions/6889862/sweave-rweavehtml-cat-output-does-not-appear-in-the-output. Функция 'cat()' не кажется постоянной; когда я пытаюсь передать его в аргумент 'msg' named в' sendmail() ', я получаю электронное письмо с пустым телом (и выражение' cat' выводится на консоль). – Jubbles

+0

@Jubbles Вы знаете, что 'cat' не возвращает значение, правильно? Он отправляет текст в файл или соединение. Убедитесь, что вы пытаетесь передать необработанный символ '' line1 \ nline2 "' в аргумент 'msg'. – joran

+0

@joran: Я знаю, что 'cat' не возвращает значение. ('cat()' возвращает объект типа 'None'). Я попробую просто передать сырого персонажа. – Jubbles