2

0 と 1 を含む列を持つマトリックスがあり、各行の値を連結して、その連結された文字列でそのマトリックスに新しい列を作成したいと考えています。

使った

apply(format(matrix), 1, paste, collapse="") 

R で N 列のテキストを連結 して、連結された値のリストを作成しますが、それらの値をマトリックスの新しい列に入れるのに問題があります。このコードの 2 行目の構文が間違っています。

私の現在のコード:

newcolumn <- rep(0,times=nrow(matrix))
newcolumn[matrix[apply(format(matrix), 1, paste, collapse="")]]
matrix <- cbind(matrix, newcolumn)
4

3 に答える 3

4
  1. R の基本的な概要を読む必要があります (リンクについてはタグ wiki を参照してください)。

現時点では、 のベクトルを0として作成しましたnewcolumn。コードの 2 行目はガベージです (ご指摘のとおり) - ポイント 1 を参照してください。

apply(format(matrix), 1, paste, collapse="")to の結果を cbind できますmatrix。事前に割り当てる必要はありませんnewcolumn

matrixa は 1 つのタイプのデータ (つまり、数値または文字など) しか保持できないことに注意してください。そのため、character列を含めると、行列全体が強制的に文字に変換されます。

# examples
# a character matrix containing the result + matrix coerced to character
charResults <- cbind(matrix, apply(format(matrix), 1, paste, collapse="") )


# you could use a data.frame to have different data classes in the same structure

dfResults <- cbind(as.data.frame(matrix), result = apply(format(matrix), 1, paste, collapse=""))

また、通常は、オブジェクトに R 関数の名前を付けないことをお勧めしますbase( などmatrix) 。

于 2013-07-15T00:11:47.090 に答える