R语言新手,自己编写了一个函数叫DCSIS,生成了随机数进行模拟,直接调用函数时得到的结果w是NULL,但是如果直接把DCSIS函数的具体内容用到生成的随机数的话得到的w就是正常的结果,请问这是为什么?是函数调用出现了问题还是函数编写有问题?还有就是同样的函数和编写方法,matlab里运行比R快很多,这是为什么啊?
编写的函数如下:
DCSIS<-function(x,y)
{
x=t(t(x));
y=t(t(y));
n<-nrow(x);
p<-ncol(x);
m<-nrow(y);
if (m!=n)
print(“Error:matrix of x and y do not match”)
source(“dcov.r”) 这是自己编写的另一个函数,运行正常,没有问题
dcov3=dcov(y,y);
w=rep(0,p);
for (k in 1:p)
{ dcov1=dcov(x[,k],y);
dcov2=dcov(x[,k],x[,k]);
w[k]=dcov1/sqrt(dcov2)/sqrt(dcov3);}
}
直接调用函数得到w是NULL
n = 100;
p = 2000;
library(“mvtnorm”)
x<-rmvnorm(n,rep(0,p),diag(p));
beta<-c(1,1,1,rep(0,p-3));
y=x%*%beta+rnorm(n);
source(“DCSIS.r”)
w=DCSIS(x,y);
直接具体求解,得到的w是正常的结果
n = 100;
p = 2000;
library(“mvtnorm”)
x<-rmvnorm(n,rep(0,p),diag(p));
beta<-c(1,1,1,rep(0,p-3));
y=x%*%beta+rnorm(n);
source(“dcov.r”)
dcov3=dcov(y,y);
w=rep(0,p);
for (k in 1:p)
{ dcov1=dcov(x[,k],y);
dcov2=dcov(x[,k],x[,k]);
w[k]=dcov1/sqrt(dcov2)/sqrt(dcov3);}
把里面的=改成<-也试过了,出来的还是NULL