作者innocent817 (Shawn純真)
看板Statistics
標題[程式] R 如何找出行向量在矩陣中的行數
時間Tue Jul 1 22:35:50 2014
------------------------------------------------------------------------
[軟體程式類別]:
R
[程式問題]:
資料處理
[軟體熟悉度]:
低(1~3個月)
[問題敘述]:
從一個矩陣裡面找出某一行向量的行數(row)
setX
[,1] [,2] [,3] [,4]
[1,] 0.5478628 0.4236571 0.063348888 0.5816978
[2,] 0.1227426 0.2783282 0.556765060 0.6575075
[3,] 0.2177614 0.1011441 0.477612694 0.3090689
[4,] 0.2570895 0.1206633 0.463100972 0.2678909
[5,] 0.2993308 0.0591137 0.272920355 0.2748358
[6,] 0.8092925 0.3577995 0.269098299 0.2258559
[7,] 0.2163968 0.1004386 0.901624205 0.1808827
[8,] 0.2365816 0.6628025 0.001174936 0.2525371
[9,] 0.1322765 0.5107590 0.126295884 0.2404161
[10,] 0.1160569 0.1170848 0.876691229 0.0657857
X
[1] 0.2163968 0.1004386 0.9016242 0.1808827
如上面的數據,每一行為一組資料[i,],每一欄皆為一種屬性
想要從setX中找出與X完全相同的資料的行數
以上面的資料來看,我想要得到的答案為7
[程式範例]:
想過使用which,可是which似乎僅適用於元素
像是which(setX==X[1],arr.ind=T)
以上述資料而言是可以找到要的答案,但無法確保該向量與該行完全相同
也想過用match,可是失敗
由於每一欄皆為一種屬性,所以不能先排列再比較
煩請版上大大了
-----------------------------------------------------------------------------
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 163.14.45.36
※ 文章網址: http://webptt.com/m.aspx?n=bbs/Statistics/M.1404225353.A.F3C.html
1F:→ celestialgod:which(apply(setX, 1, function(v) v==X)) 07/02 00:43
2F:→ celestialgod:若擔心rounding error...可以把v==X改成下面的code 07/02 01:38
3F:→ celestialgod:sum((v-X)^2) < 1e-12 07/02 01:38
4F:→ koai:which(rowSums(rep(1,nrow(setX))%x%t(X)==setX)==ncol(setX) 07/02 13:52
5F:→ koai:) 07/02 13:52
6F:→ celestialgod:我錯了 v==X 應該成 sum(v==X) == length(v) 07/02 16:48
7F:→ innocent817:謝謝大家的回應,現在還不太會用apply,原來沒這麼難 07/02 21:43
8F:→ celestialgod:原PO不客氣,歡迎去R_Language版問任何問題喔~~ 07/02 21:44
9F:→ celestialgod:我們正需要文章!!!!!! 07/02 21:44
10F:→ innocent817:to K大,用rowSums的會不會有不同組合但總合一樣的問 07/02 21:44
11F:→ celestialgod:原PO的考量是有可能的~~~只是看你的資料是浮點數還是 07/02 21:45
12F:→ celestialgod:整數~~ 07/02 21:45
13F:→ innocent817:是浮點數就不會有問題了嗎?還是說只是機率很小 07/02 21:47
14F:→ celestialgod:機率太小XD 07/02 21:49
15F:→ innocent817:我想也是XDDDDD 07/02 21:50
16F:→ innocent817:to C大,所以which(apply(setX, 1, function(v) sum(v 07/02 21:51
17F:→ innocent817:==X) == length(v)))是完整的code? 07/02 21:52
18F:→ celestialgod:對,麻煩你先測試看看,我沒跑過,抱歉@@ 07/02 21:53
19F:→ innocent817:好的!馬上來試驗一下XDDDDD 07/02 21:53
20F:推 koai:這裡的rowSums不是指列合相等 07/02 23:01
21F:推 koai:你可以把which跟rowSums拆掉,看看結果!手機不方便回很清楚 07/02 23:06
22F:→ celestialgod:喔,原來K大的寫法就跟我用apply類似 07/02 23:18
23F:→ innocent817:試過了,都是成功的喔! 07/02 23:25