楼主: xiangweinn
1976 11

[问答] R程序求助 [推广有奖]

  • 1关注
  • 28粉丝

已卖:524份资源

副教授

52%

还不是VIP/贵宾

-

威望
0
论坛币
9009 个
通用积分
0.6000
学术水平
32 点
热心指数
58 点
信用等级
25 点
经验
34409 点
帖子
531
精华
1
在线时间
634 小时
注册时间
2010-11-14
最后登录
2023-7-18

楼主
xiangweinn 发表于 2011-10-29 20:58:37 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
有一个函数,跑出来的结果有如下两种可能,如何将结果为$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

二维码

扫码加我 拉你入群

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

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

关键词:R程序 succeed Case SUCC null 程序

沙发
net_test 发表于 2011-10-29 21:12:33
这个比较简单,请先把你的ranXch(x,y)函数贴出来,我给你解决的方法。

藤椅
xiangweinn 发表于 2011-10-29 21:25:17
谢谢,ranXch是binarySimCLF包里面的一个函数,

板凳
xiangweinn 发表于 2011-10-29 21:29:29
这个函数有点讨厌,用来生成离散相关伯努利数据,有时候会出错

报纸
xiangweinn 发表于 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
}

地板
qoiqpwqr 发表于 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的行去掉就行了。
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
aspenroad + 1 + 1 + 1 热心帮助其他会员

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

7
xiangweinn 发表于 2011-10-29 22:27:24
关键是不能删除行,否则后面用到y的时候,矩阵的维数不对

8
xiangweinn 发表于 2011-10-29 22:28:50
你刚才说的,我试过,好像不行哦

9
qoiqpwqr 发表于 2011-10-29 22:46:58
有两种方法:
1. 开始把N的大小取的大一点,因为你的是independent sampling,所以去掉行没有问题。
2. 用while语句,设定一个变量存成功的行数,当此变量达到你的要求时,退出就行了。

10
xiangweinn 发表于 2011-10-29 23:30:16
谢谢,我也是那么想的,但是一下子想不出怎么个处理方法,此外,如果令T=10,好像也出了点问题(无法理解)。

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-9 06:36