全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
5341 5
2010-10-13
"a" <-
function(effa,effb,effcp,n,nrep,alpha,rho)
{
for (i in 1:nrep) {

x <- rnorm(n)


x2 <- rnorm(n)


x3 <- rnorm(n)


m <- effa * x + x2


y <- effb * m + effcp * x + x3



fit.mx <- lm(m~x)


sum.mx <- summary(fit.mx)


a <- sum.mx$coefficients[2,1]


sea <- (sum.mx$coefficients[2,2])


fit.yxm <- lm(y~x+m)


sum.yxm <- summary(fit.yxm)


b <- sum.yxm$coefficients[3,1]


seb <- (sum.yxm$coefficients[3,2])



ab <- a*b


write(c(a,sea,b,seb,rho,alpha),file="D:/M/raw.txt",ncolumns=6,append=TRUE)
setwd("D:/M/")
shell("D:/M/prodclin.exe",wait = TRUE)

critval <- read.table("D:/M/critval.txt",header=FALSE)
lcrit <- critval[1,1]
ucrit <- critval[1,2]
write(c(lcrit,ucrit),file="D:/M/critval2.txt",ncolumns=2,append=TRUE)

}
}

a(0.14,0.3,0.1,50,20,0.05,0)

我有个R程序,在运行黄色部分语句时出现问题。问题是:如果重复nrep=20次,就会在D:/M/raw.txt看到20排,每排6个数据——即a,sea,b,seb,rho,alpha。接下来,我需要利用每排的6个数据运行程序prodclin.exe,程序prodclin.exe的作用就是计算并输出lcritucrit值,从而在critval2.txt得到20排,每排2个数据——即lcritucrit。但是我现在得到的这20排数据完全一样,说明在循环中,程序prodclin.exe只运行了一次,请问应该如何修改程序,使得在循环中,程序prodclin.exe运行20次,从而在critval2.txt得到20排,每排2个数据,每排数据不同。谢谢各位高手!
二维码

扫码加我 拉你入群

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

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

全部回复
2010-10-13 12:25:33
黄色部分即如下语句:
setwd("D:/M/")
shell("D:/M/prodclin.exe",wait = TRUE)

critval <- read.table("D:/M/critval.txt",header=FALSE)
lcrit <- critval[1,1]
ucrit <- critval[1,2]
write(c(lcrit,ucrit),file="D:/M/critval2.txt",ncolumns=2,append=TRUE)
二维码

扫码加我 拉你入群

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

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

2010-10-14 08:33:53
程序无误,只是读取数据错误.
将write(c(a,sea,b,seb,rho,alpha),file="D:/M/raw.txt",ncolumns=6,append=TRUE)
修改为:
write(c(a,sea,b,seb,rho,alpha),file="D:/M/rawappend.txt",ncolumns=6,append=TRUE)
write(c(a,sea,b,seb,rho,alpha),file="D:/M/raw.txt",ncolumns=6)

> a(0.14,0.3,0.1,50,20,0.05,0)
[1] -3.465771  8.746216
[1] -3.772296  7.902763
[1] -0.852403 10.154888
[1] -0.404553 11.036637
[1] -2.107998 15.656781
[1] -4.308292  4.325448
[1] -8.255233  4.452684
[1] -1.256811 13.668183
[1] -0.735315  9.871790
[1] -0.033845 13.062694
[1] -4.645290  8.197443
[1] -1.96582  9.03957
[1] -1.193867  8.578395
[1] -5.026969  4.308111
[1] -7.433605  1.323561
[1] -1.845727  4.658386
[1] -4.137163  9.716866
[1] -1.787504  6.146849
[1] -0.489765 11.813559
[1] -0.19964 11.88186
二维码

扫码加我 拉你入群

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

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

2010-10-14 10:17:50
非常感谢epoh ,问题已经解决,谢谢!
二维码

扫码加我 拉你入群

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

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

2015-6-25 08:56:35
fangjie-fanglu 发表于 2010-10-13 12:25
黄色部分即如下语句:
setwd("D:/M/")
shell("D:/M/prodclin.exe",wait = TRUE)
你好,我想问一下我有一个挺大的数据,需要对每行操作,会跑一个R的循环,数据太大就跑死了,有没有什么方法可以解决,怎么操作一次调用一次循环里的程序啊,避免循环
二维码

扫码加我 拉你入群

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

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

2015-6-25 08:59:36
epoh 发表于 2010-10-14 08:33
程序无误,只是读取数据错误.
将write(c(a,sea,b,seb,rho,alpha),file="D:/M/raw.txt",ncolumns=6,append=T ...
你好,我想问一下我有一个挺大的数据,需要对每行操作,会跑一个R的循环,数据太大就跑死了,有没有什么方法可以解决,怎么操作一次调用一次循环里的程序啊,避免循环
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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