全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
2135 2
2015-10-19
自己编写了一个函数叫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);}





二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2015-10-19 11:00:38
最后少了1个w和一个大括号?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2015-10-19 18:12:24
jinkelazzz 发表于 2015-10-19 11:00
最后少了1个w和一个大括号?
是说自编函数部分吗?以前编的最后也不会在写w,都能正常用。而且加上w也试过了,出来的还是NULL
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群