全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
1917 11
2011-10-29
有一个函数,跑出来的结果有如下两种可能,如何将结果为$succeed的情况对应的$y取出来赋值给一个矩阵的某行,因为一担跑一次的结果是case1,函数会自动退出循环,矩阵行赋值失败。

(#case1:)
> ranXch(mu[i,],rho)
$succeed
[1] FALSE
$y
NULL

(#case2:)
> ranXch(mu[i,],rho)
$succeed
[1] TRUE
$y
[1] 0 0 1 1 1

二维码

扫码加我 拉你入群

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

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

全部回复
2011-10-29 21:12:33
这个比较简单,请先把你的ranXch(x,y)函数贴出来,我给你解决的方法。
二维码

扫码加我 拉你入群

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

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

2011-10-29 21:25:17
谢谢,ranXch是binarySimCLF包里面的一个函数,
二维码

扫码加我 拉你入群

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

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

2011-10-29 21:29:29
这个函数有点讨厌,用来生成离散相关伯努利数据,有时候会出错
二维码

扫码加我 拉你入群

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

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

2011-10-29 21:39:49
以下是我的程序,有时候矩阵y产生出错,不稳当,当需要循环多次时(5次以上),y的某些行全变成NULL
谢谢高手指教

set.seed(100)
library(MASS)

N=100
T=5

x1=list()
for(i in 1:N){x1[[i]]=runif(T)}

x2=list()
for(i in 1:N){x2[[i]]=runif(T)}

x3=list()
for(i in 1:N){x3[[i]]=runif(T)}

x4=list()
for(i in 1:N){x4[[i]]=runif(T)}

x5=list()
for(i in 1:N){x5[[i]]=runif(T)}

X1=unlist(x1)
X2=unlist(x2)
X3=unlist(x3)
X4=unlist(x4)
X5=unlist(x5)

f1=1.5*X1^2-mean(1.5*X1^2)
f2=2*sin(2*pi * X2)-mean(2*sin(2*pi * X2))
f3=.8*cos(2*pi*X3)+X3^.5-mean(.8*cos(2*pi*X3)+X3^.5)
f4=-1.5*sin(2*pi*X4)+X4^2-mean(-1.5*sin(2*pi*X4)+X4^2)
f5=1.5*sqrt(X5)+cos(2*pi*X5)-mean(1.5*sqrt(X5)+cos(2*pi*X5))
f=f1+f2+f3+f4+f5

# generating correlated discrete data
library(binarySimCLF)

y = matrix(rep(NA,T*N),N,byrow=TRUE)
f0=matrix(f,N,byrow=TRUE)
mu =exp(f0)/(1+exp(f0))# mean matrix
for(i in 1:N )
{rho=(rhoRange(mu[i,])$rhomax+rhoRange(mu[i,])$rhomin)/2
y[i,]=ranXch(mu[i,],rho)$y
}
二维码

扫码加我 拉你入群

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

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

2011-10-29 22:23:15
把你最近四行的for循环改成
for (i in 1:N)
{
rho=(rhoRange(mu[i,])$rhomax+rhoRange(mu[i,])$rhomin)/2
temp = ranXch(mu[i, ], rho)
if (temp$succeed)
    y[i,] = temp$y
}
然后把里面NA的行去掉就行了。
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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