好吧,其实大家的分歧是因为我说的不够具体,我举个更详细的例子来说下我是啥意思,(注意程序不要运行,因为错了,R会死机),有可能我问的跟我标题和上面我1,5楼举的例子意思不一样,这都是本人水平问题,但下面的例子能表达我的意思:
match=function(a,b)<br />
{<br />
n=length(a) #a,b都是一个数值型的等长向量,大家可以举a=1:3,b=2:4<br />
c=rep(0,n) #c是一个标记状态的向量:如果c=(1,1,0)那说明d[3]不等于a[3]+b[3]<br />
d=sample(n,n) #如果c=(0,1,0)那说明d[1],d[3]都不等于对应的a,b元素之和<br />
while(any(c==0)) #我的目的是使得最后的d=a+b,当然这只是为了做个简单的例子表达意思<br />
{ #所以我用状态c去控制d是否等于a+b,如果c全为1了,则d=a+b了,否则就循环<br />
indexc=which(c==0)[1] #取不等于1的第一个indexc此时对应的d[indexc]!=a[indexc]+b[indexc]<br />
add(a,b,c,d,indexc) #调用add函数,让对应位相等,并且调整indexc的状态为1,再继续循环,直到都相等<br />
}<br />
return(list(c,d))<br />
} </p>
<p>add=function(a,b,c,d,indexc)<br />
{<br />
d[indexc]=a[indexc]+b[indexc]<br />
c[indexc]=1<br />
}
问题就来了:这个add()函数执行过之后,在match()函数里,c到底变化了没有?因为我是靠判断c来进行循环的,如果c不变不是死循环么,当然有大神会说直接把add函数的外衣拿掉,c就肯定变了,但是,我想说的就是一个程序很大,需要不断的从一个函数调用其它函数时,想分块写其它函数再调用的话,C语言我知道怎么做,R呢?
我再想的是不是:1.我程序思路有问题 2.<<-怎么用在这里?以达到效果 3.是不是考虑
用namespace方面的知识在这里,可我就大概知道这个意思,完全不会用,如果用,怎么用呢?
PS:希望我表达清楚我的意思了。。。。
</p>