作者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