作者hctud (花開堪折直須折)
站內Statistics
標題[問題] [R] Warning:較長物件長度不是較短物件長度的倍數
時間Sat Sep 4 11:25:09 2010
小弟在執行程式時,碰到一個問題
程式簡化如下
K=6:8
Pos=function(x,y)
{ sum (x+y+K) }
則Pos(x=1,y=0)得到的結果是24
這沒有問題
若給定
x=1:4; y=0:3
Pos(x,y)
我預期會得到一個長度為4的向量
即 [ Pos(x=1,y=0), Pos(x=2,y=1), Pos(x=3,y=2), Pos(x=4,y=3) ]
結果卻出現如下訊息
Warning message:
In x + y + K :
longer object length is not a multiple of shorter object length
得到的Pos(x,y)也僅為單一的數值
我知道它是指 K 的長度與 x, y 的長度不符
但我不曉得為何會出現這樣的問題
如果我想照我的預期得到一個長度為4的向量
該如何修正我的程式
謝謝指教
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.118.77.169
※ 編輯: hctud 來自: 122.118.77.169 (09/04 11:27)
※ 編輯: hctud 來自: 122.118.77.169 (09/04 11:29)
1F:推 gsuper:你要不要用class確認每一步都是向量?搞不好在哪裡變成矩陣 09/04 15:56
2F:→ gsuper:或者是短向量一定要放在前面? try this sum(K+x+y) 09/04 15:57
3F:→ hctud:手邊沒自己的電腦無法嘗試 但我想知道該如何將 (x,y) 09/05 10:19
4F:→ hctud:以一對對的型式代入Pos 而非以向量的型式代入 09/05 10:21
5F:→ hctud:因為我最終的目的是使用outer(x,y, Pos) 09/05 10:22
6F:→ hctud:但似乎是因為Pos的運算中有向量K的存在而產生問題 09/05 10:24
7F:→ hctud:最後小弟是以for迴圈 土法煉鋼解決的 @@ 09/05 10:26
8F:→ gsuper:Pos=function(x,y) {x+y+K} sum()是多餘的 09/06 15:00
9F:→ gsuper:我覺得還是別用這種容易混淆的寫法 , 將來自己會讀不懂 09/06 15:11
10F:→ lin15:你不要下function跑跑看就知道了 sum只會給一個加總 09/06 16:13