2 つの値を連結 (マージ、結合) するにはどうすればよいですか? たとえば、私は持っています:
tmp = cbind("GAD", "AB")
tmp
# [,1] [,2]
# [1,] "GAD" "AB"
私の目標は、「tmp」の 2 つの値を 1 つの文字列に連結することです。
tmp_new = "GAD,AB"
私のためにこれを行うことができる機能はどれですか?
2 つの値を連結 (マージ、結合) するにはどうすればよいですか? たとえば、私は持っています:
tmp = cbind("GAD", "AB")
tmp
# [,1] [,2]
# [1,] "GAD" "AB"
私の目標は、「tmp」の 2 つの値を 1 つの文字列に連結することです。
tmp_new = "GAD,AB"
私のためにこれを行うことができる機能はどれですか?
paste()
行く方法です。以前の投稿者が指摘したように、貼り付けは次の 2 つのことを行うことができます。
値を 1 つの「文字列」に連結します。
> paste("Hello", "world", sep=" ")
[1] "Hello world"
ここで、引数sep
は、文字ベクトルを連結または折りたたむために引数間で使用される文字を指定します。
> x <- c("Hello", "World")
> x
[1] "Hello" "World"
> paste(x, collapse="--")
[1] "Hello--World"
ここで、引数collapse
は、折りたたむベクトルの要素間で使用する文字を指定します。
両方を組み合わせることもできます:
> paste(x, "and some more", sep="|-|", collapse="--")
[1] "Hello|-|and some more--World|-|and some more"
help.search()
便利な機能です。
> help.search("concatenate")
に導きますpaste()
。
最初の非paste()
回答については、 stringr::str_c()
(次にtoString()
以下) を参照してください。この質問ほど長くはありませんでしたので、それも存在することに言及することは有益だと思います.
ご覧のとおり、使い方はとても簡単です。
tmp <- cbind("GAD", "AB")
library(stringr)
str_c(tmp, collapse = ",")
# [1] "GAD,AB"
ドキュメント ファイルの説明から、この問題にうまく適合します。
str_c がどのように機能するかを理解するには、文字列の行列を構築していると想像する必要があります。各入力引数は列を形成し、通常のリサイクル規則を使用して、最も長い引数の長さに拡張されます。sep 文字列が各列の間に挿入されます。collapse が NULL の場合、各行は 1 つのストリングに折りたたまれます。NULL でない場合、その文字列は各行の最後に挿入され、マトリックス全体が 1 つの文字列に折りたたまれます。
2016 年 4 月 13 日追加: 目的の出力 (余分なスペース) とまったく同じではありませんが、誰も言及していません。 toString()
基本的にはpaste()
ハードcollapse = ", "
コードされたバージョンなので、次のことができます
toString(tmp)
# [1] "GAD, AB"
> tmp = paste("GAD", "AB", sep = ",")
> tmp
[1] "GAD,AB"
R連結文字列を検索してGoogleからこれを見つけました:http://stat.ethz.ch/R-manual/R-patched/library/base/html/paste.html
独自のオペレーターを作成できます:
'%&%' <- function(x, y)paste0(x,y)
"new" %&% "operator"
[1] newoperator`
「and」( &
) 演算子を再定義することもできます。
'&' <- function(x, y)paste0(x,y)
"dirty" & "trick"
"dirtytrick"
ベースライン構文をいじるのは醜いですがpaste()/paste0()
、独自のコードでのみ作業する場合は、(ほとんどの場合)論理& and
演算子を置き換え*
て、論理「and &」を使用する代わりに論理値の乗算を行うことができます。
別の方法:
sprintf("%s you can add other static strings here %s",string1,string2)
機能よりも便利な場合がありpaste()
ます。%s
主観的な文字列が含まれる場所を示します。
パスを作成しようとするときに、これが役立つことに注意してください。
sprintf("/%s", paste("this", "is", "a", "path", sep="/"))
出力
/this/is/a/path
作成したマトリックス tmp を考えると、次のようになります。
paste(tmp[1,], collapse = ",")
単純にではなく、cbind を使用してマトリックスを作成している理由があると思います。
tmp <- "GAD,AB"