3 回答

TA貢獻(xiàn)1798條經(jīng)驗 獲得超3個贊
幾乎。需要提供給“ [”作為兩列矩陣:
dat$matval <- mat[ cbind(dat$I, dat$J) ] # should do it.
有一個警告:盡管這也適用于數(shù)據(jù)幀,但它們首先被強制轉(zhuǎn)換為矩陣類,如果有任何非數(shù)字類,則整個矩陣將成為“最低分母”類。

TA貢獻(xiàn)1830條經(jīng)驗 獲得超3個贊
這是使用apply基于行的操作的單線
> dat <- as.data.frame(matrix(rep(seq(4),4),ncol=2))
> colnames(dat) <- c('I','J')
> dat
I J
1 1 1
2 2 2
3 3 3
4 4 4
5 1 1
6 2 2
7 3 3
8 4 4
> mat <- matrix(seq(16),ncol=4)
> mat
[,1] [,2] [,3] [,4]
[1,] 1 5 9 13
[2,] 2 6 10 14
[3,] 3 7 11 15
[4,] 4 8 12 16
> dat$K <- apply( dat, 1, function(x,mat) mat[ x[1], x[2] ], mat=mat )
> dat
I J K
1 1 1 1
2 2 2 6
3 3 3 11
4 4 4 16
5 1 1 1
6 2 2 6
7 3 3 11
8 4 4 16
- 3 回答
- 0 關(guān)注
- 777 瀏覽
添加回答
舉報