第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用行,列索引的矩陣索引值

使用行,列索引的矩陣索引值

手掌心 2019-12-03 16:20:46
這可能很容易解決。我有一個mat500行×335列的2D矩陣,以及一個dat120425行的data.frame。data.frame dat有兩列I和J,它們是從索引到行的整數(shù)mat。我想將的值從添加mat到的行中dat。這是我的概念上的失敗:> dat$matval <- mat[dat$I, dat$J]Error: cannot allocate vector of length 1617278737(我在Win32上使用R 2.13.1)。深入研究,我發(fā)現(xiàn)我在濫用矩陣索引,因為看來我只是得到的子矩陣mat,而不是我所期望的一維值數(shù)組,即:> str(mat[dat$I[1:100], dat$J[1:100]]) int [1:100, 1:100] 20 1 1 1 20 1 1 1 1 1 ...我期待著類似的東西int [1:100] 20 1 1 1 20 1 1 1 1 1 ...。使用行,列的索引獲取值來索引2D矩陣的正確方法是什么?
查看完整描述

3 回答

?
呼如林

TA貢獻(xiàn)1798條經(jīng)驗 獲得超3個贊

幾乎。需要提供給“ [”作為兩列矩陣:


dat$matval <- mat[ cbind(dat$I, dat$J) ] # should do it.

有一個警告:盡管這也適用于數(shù)據(jù)幀,但它們首先被強制轉(zhuǎn)換為矩陣類,如果有任何非數(shù)字類,則整個矩陣將成為“最低分母”類。


查看完整回答
反對 回復(fù) 2019-12-03
?
牛魔王的故事

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


查看完整回答
反對 回復(fù) 2019-12-03
  • 3 回答
  • 0 關(guān)注
  • 777 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號