2017-11-13 4 views
0

行列「pnl12」(x行、y列)と2つのベクトル「ttd」と「ttm」があります。特定の列番号を配列に含まれる値に置き換える方法

no. of columns in 'pnl12' = length of ttd = length of ttm 

今、私のようにpnl12の特定の列を選択したい:

pnl12[,(ttm < 1) & (ttd < 1) & (ttd<ttm) ] 

か私もと交換するpnl12の列を持つことができます。

which((ttm < 1) & (ttd < 1) & (ttd<ttm)) 

3列、のは、言ってみましょう上記の条件を満たすものが796,799,904列として選択される。

は今、私はそうpnl12の第七百九十六列のすべての値が19で第七百九十九列のすべての値が置き換えられます置き換えるされます

b = c(19, 26, 43) 

ベクトルbの値によって、これらの列のすべての値を置き換えたいです26によってそして第九百四列のすべての値は、このベクトルbは次のように生成された43

によって置き換えられます:だから、「B」の長さが列SEのノーと同じである

b = ead[(ttm < 1) & (ttd < 1) & (ttd<ttm)]*(1-rr[(ttm < 1) & (ttd < 1) & (ttd<ttm)])) 

pnl12で採択された。

上記のやり方を教えてもらえますか?

は例えば、私は行列があります。

1 2 3 
4 5 6 
7 8 9 

が続いて列2と3は40と50で置き換えることがあるが、その結果は以下のようになります。

1 40 50 
4 40 50 
7 40 50 

がでこれを達成するためにどのようにR?

おかげ

私は右の寸法にまで、あなたの交換を拡大する

答えて

0

for (i in seq_along(b)) { 
    mm[, i] = x[i] 
} 

# setting up one of your examples 
mm = matrix(1:9, 3) 
b = c(2, 3) 
x = c(40, 50) 

# expand the replacement appropriately, then assign 
xx = matrix(x, nrow = nrow(mm), ncol = length(x), byrow = TRUE) 
mm[, b] = xx 
mm 
#  [,1] [,2] [,3] 
# [1,] 1 40 50 
# [2,] 2 40 50 
# [3,] 3 40 50 

また、簡単なforループと間違って何もありません

関連する問題