2012-01-31 21 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> 
(私は私が使ってきたSMTPサーバーへのアクセス権を持っている場合)、しかし私は、私は明日あなたの提案された解決策を試して与える
+0

それがうまくいくか疑問に思っています。私の問題は、次のように聞こえる:http://stackoverflow.com/questions/6889862/sweave-rweavehtml-cat-output-does-not-appear-in-the-output。関数 'cat()'は永続的に見えません。 'sendmail()'の 'msg'という名前の引数に渡そうとすると、ブランクのボディー(' cat'式がコンソールに出力されます)のメールが届きます。 – Jubbles

+0

@Jubblesあなたは 'cat'が値を返さないことを知っていますよね?テキストをファイルまたは接続に送信します。生の文字 '' line1 \ nline2 "'を 'msg'引数に渡してみてください。 – joran

+0

@joran:私は 'cat'が値を返さないことを知っています。 ( 'cat()'は 'None'型のオブジェクトを返します)。生のキャラクターを渡すだけです。 – Jubbles

関連する問題