我有一个矩阵' pnl12'(x行,y列)和两个向量:' 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列。
现在我希望用向量b
中的值替换这些列的所有值b = c(19, 26, 43)
因此,pnl12的第796列中的所有值都将被替换为19.第799列中的所有值将被替换为26.并且第904列中的所有值将替换为43。
此向量b生成为:
b = ead[(ttm < 1) & (ttd < 1) & (ttd<ttm)]*(1-rr[(ttm < 1) & (ttd < 1) & (ttd<ttm)]))
所以,&#39; b&#39;与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 :(得分:0)
我会将您的替换扩展到正确的尺寸:
# 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
循环没有错:
for (i in seq_along(b)) {
mm[, i] = x[i]
}