看板 Statistics 關於我們 聯絡資訊
------------------------------------------------------------------------ [軟體程式類別]: 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://www.ptt.cc/bbs/Statistics/M.1404225353.A.F3C.html
celestialgod:which(apply(setX, 1, function(v) v==X)) 07/02 00:43
celestialgod:若擔心rounding error...可以把v==X改成下面的code 07/02 01:38
celestialgod:sum((v-X)^2) < 1e-12 07/02 01:38
koai:which(rowSums(rep(1,nrow(setX))%x%t(X)==setX)==ncol(setX) 07/02 13:52
koai:) 07/02 13:52
celestialgod:我錯了 v==X 應該成 sum(v==X) == length(v) 07/02 16:48
innocent817:謝謝大家的回應,現在還不太會用apply,原來沒這麼難 07/02 21:43
celestialgod:原PO不客氣,歡迎去R_Language版問任何問題喔~~ 07/02 21:44
celestialgod:我們正需要文章!!!!!! 07/02 21:44
innocent817:to K大,用rowSums的會不會有不同組合但總合一樣的問 07/02 21:44
celestialgod:原PO的考量是有可能的~~~只是看你的資料是浮點數還是 07/02 21:45
celestialgod:整數~~ 07/02 21:45
innocent817:是浮點數就不會有問題了嗎?還是說只是機率很小 07/02 21:47
celestialgod:機率太小XD 07/02 21:49
innocent817:我想也是XDDDDD 07/02 21:50
innocent817:to C大,所以which(apply(setX, 1, function(v) sum(v 07/02 21:51
innocent817:==X) == length(v)))是完整的code? 07/02 21:52
celestialgod:對,麻煩你先測試看看,我沒跑過,抱歉@@ 07/02 21:53
innocent817:好的!馬上來試驗一下XDDDDD 07/02 21:53
koai:這裡的rowSums不是指列合相等 07/02 23:01
koai:你可以把which跟rowSums拆掉,看看結果!手機不方便回很清楚 07/02 23:06
celestialgod:喔,原來K大的寫法就跟我用apply類似 07/02 23:18
innocent817:試過了,都是成功的喔! 07/02 23:25