0

これは非常に簡単な質問かもしれませんが、私はRが初めてで、何時間もこれを見つけようとしてきましたが、運がありません...

2 列目の値が 1 の場合にのみ、次の行列の 1 列目の各要素に変換を適用したい...

> a<-matrix(c(30,40,50,60,1,0,1,0),nrow=4,ncol=2)
> a
     [,1] [,2]
[1,]   30    1
[2,]   40    0
[3,]   50    1
[4,]   60    0
> 

したがって、これは次のようになります(私の関数が列1の値に-1を掛けると仮定します):

> a.transformed
     [,1] [,2]
[1,]  -30    1
[2,]   40    0
[3,]  -50    1
[4,]   60    0

これは apply() 関数を暗示していると思いますが、if() を機能させることができないようです! ヘルプ!!

4

2 に答える 2

0

演算子を使用[して論理比較を行い、次に演算子を使用し[<-て関連する値をサブセット化および置換できます...

#  rows we want to change
id <- a[,2] == 1
a[id , 1 ] <- a[ id , 1 ] * -1
a
#     [,1] [,2]
#[1,]  -30    1
#[2,]   40    0
#[3,]  -50    1
#[4,]   60    0

これは R のかなり基本的な操作であるため、入門書を読むことをお勧めします。

于 2013-10-22T14:51:46.520 に答える