web-dev-qa-db-ja.com

Rでの貼り付け/折りたたみ

貼り付けに戸惑い、単純な連結だと思った。

whales <- c("C","D","C","D","D")

quails <- c("D","D","D","D","D")

results <-paste(whales, quails, collapse = '')

これがCD DD CD DD DDではなく「C DD DC DD DD D」を返すのはなぜですか?

さらに、なぜ

results <-paste(whales[1], quails[1], collapse = '')

返す

「C D」?

スペースあり?

ありがとう

編集

はい、わかりました

results <-paste(whales, quails, collapse = NULL, sep='')

私が欲しいものを手に入れますが、前のコードが機能しなかった理由の説明?そして、回答者にも感謝します。

16
DSG

最初の質問については、次のことを試してください(2文字を繰り返すよりもわかりやすいかもしれません)。

### Note that R paste's together corresponding elements together...
paste(c("A", "S", "D", "F"), 
      c("W", "X", "Y", "Z"))

[1] "A W" "S X" "D Y" "F Z"

### Note that with collapse, R converts the above 
  # result into a length 1 character vector.
paste(c("A", "S", "D", "F"), 
      c("W", "X", "Y", "Z"), collapse = '')

[1] "A WS XD YF Z"

(「望ましい」結果を得るために)本当にやりたいことは次のとおりです。

### "Desired" result:
paste(whales, quails, sep = '', collapse = ' ')

[1] "CD DD CD DD DD"

sepおよびcollapse引数を異なる値に指定していることに注意してください。これは2番目の質問に関連しています。 sepでは、各用語を文字列で区切ることができますが、collapseでは、結果全体を文字列で区切ることができます。

試す

paste(whales, quails, collapse = '', sep = '')

[1] "CDDDCDDDDD"

または、ショートカットpaste0を使用します。デフォルトはpasteで、sep = ''

paste0(whales, quails, collapse = '')
23
Andreas

ビジュアルが好きな人のために、pasteRでどのように機能するかを説明する私の見解を以下に示します。

enter image description here

sepは、sep引数の値を詰めた要素ごとのサンドイッチを作成します。

enter image description here

collapseは、collapse引数を使用して生成されたサンドイッチの間にsep引数の値が追加された1つの大きなサンドイッチを作成します。

enter image description here

6
Ashirwad