• R语言:R2OpenBUGS


    用这个包调用BUGS model,分别用表格和图形概述inference和convergence,保存估计的结果

    as.bugs.array 转换成bugs object

    函数把马尔科夫链估计结果(不是来自于BUGS),转成BUGS object,主要用来plot.bugs 展示结果。

    as.bugs.array(sims.array, model.file=NULL, program=NULL, DIC=FALSE, DICOutput=NULL, n.iter=NULL, n.burnin=0, n.thin=1)

    sims.array :3维数组 n.keep, n.chains和combined parameter vector的长度

    model.file : OpenBUGS编写的.odc 模型文件

    DIC : 是否计算DIC曲线

    DICOutput : DIC值

    n.iter :生成sims.array 每条chain 迭代数

    n.burnin :丢弃的迭代次数

    n.thin :thinning rate

    attach.all 添加数据到搜索路径

    The database is attached/detached to the search path,While attach.all attaches all elements of an object x to a database called name, attach.bugs attaches all elements of x$sims.list to the database bugs.sims itself making use of attach.all.

    attach.all(x, overwrite = NA, name = “attach.all”) attach.bugs(x, overwrite = NA) detach.all(name = “attach.all”) detach.bugs()

    x : bugs 对象

    overwrite :TRUE 删除全局环境中被掩盖的数据, NA 询问,FALSE

    name : 环境name

    bugs 最重要,用R运行bugs

    自动输入值,启动bugs,保存结果

    bugs(data, inits, parameters.to.save, n.iter, model.file=“model.txt”, n.chains=3, n.burnin=floor(n.iter / 2), n.thin=1, saveExec=FALSE,restart=FALSE, debug=FALSE, DIC=TRUE, digits=5, codaPkg=FALSE, OpenBUGS.pgm=NULL, working.directory=NULL, clearWD=FALSE, useWINE=FALSE, WINE=NULL, newWINE=TRUE, WINEPATH=NULL, bugs.seed=1, summary.only=FALSE, save.history=(.Platform$OS.type == “windows” | useWINE==TRUE), over.relax = FALSE)

    data :模型中使用的数据

    inits :n chain 的元素列表,每一个要素是一个模型初始值列表,或者一个生成初始值得function

    parameters.to.save : 需要被记录的参数名向量

    model.file : model 文件.txt

    n.chains : 默认3条

    n.iter :每条链的迭代次数,默认2000

    n.thin : Thinning rate. 正整数,默认是1,

    saveExec :使用basename(模型.file)保存OpenBUGS执行的重新启动映像。

    restart :执行从上次执行的最后状态恢复,存储在工作目录中的.bug文件中。

    debug : 默认FALSE,正在运行行时Openbugs 页面关闭

    DIC :计算deviance,,pD,和DIC。

    digits :有效小数位数

    codaPkg :FALSE 返回 bugs对象,否则输出,用coda 包 read.bugs 读取,

    OpenBUGS.pgm :通向OpenBUGS可执行程序的完整路径。

    working.directory:OpenBUGS的输入和输出将存储在此目录中;

    clearWD :是否这些文件的“data.txt”、“init(1:n.chains). txt”,“log.odc”、“codaIndex.txt”和“coda[1:nchain].txt”结束时删除。

    bugs.seed :OpenBUGS随机种子,1-14整数

    summary.only : TURE ,仅对非常快速的分析给出了一个参数概要

    save.history : TURE,最后画出trace

    # An example model file is given in:
    model.file <- system.file(package="R2OpenBUGS", "model", "schools.txt")
    # Let's take a look:
    print(model.file)
    [1] "C:/Users/Date/Documents/R/win-library/3.5/R2OpenBUGS/model/schools.txt"
    file.show(model.file)

    model { for (j in 1:J){ y[j] ~ dnorm (theta[j], tau.y[j]) theta[j] ~ dnorm (mu.theta, tau.theta) tau.y[j] <- pow(sigma.y[j], -2) } mu.theta ~ dnorm (0.0, 1.0E-6) tau.theta <- pow(sigma.theta, -2) sigma.theta ~ dunif (0, 1000) }

    data(schools)
    schools
      school estimate   sd
    1      A    28.39 14.9
    2      B     7.94 10.2
    3      C    -2.75 16.3
    4      D     6.82 11.0
    5      E    -0.64  9.4
    6      F     0.63 11.4
    7      G    18.01 10.4
    8      H    12.16 17.6
    J <- nrow(schools)
    y <- schools$estimate
    sigma.y <- schools$sd
    data <- list ("J", "y", "sigma.y")
    data
    [[1]]
    [1] "J"
    
    [[2]]
    [1] "y"
    
    [[3]]
    [1] "sigma.y"
    inits <- function(){
          list(theta=rnorm(J, 0, 100), mu.theta=rnorm(1, 0, 100),sigma.theta=runif(1, 0, 100))
    }
    parameters <- c("theta", "mu.theta", "sigma.theta")
    schools.sim <- bugs(data, inits, parameters, model.file,
    n.chains=3, n.iter=5000)
    print(schools.sim)
    Inference for Bugs model at "C:/Users/Date/Documents/R/win-library/3.5/R2OpenBUGS/model/schools.txt", 
    Current: 3 chains, each with 5000 iterations (first 2500 discarded)
    Cumulative: n.sims = 7500 iterations saved
                mean  sd  2.5%  25%  50%  75% 97.5%
    theta[1]    11.2 8.9  -2.8  5.5  9.8 15.7  32.9
    theta[2]     7.5 6.5  -4.9  3.4  7.4 11.5  20.8
    theta[3]     5.8 8.0 -12.3  1.3  6.4 10.5  21.0
    theta[4]     7.1 6.7  -6.3  3.0  7.1 11.2  20.9
    theta[5]     4.9 6.3  -8.8  1.0  5.5  9.1  16.4
    theta[6]     5.8 6.8  -9.2  1.7  6.1 10.1  18.3
    theta[7]    10.4 7.2  -2.1  5.6  9.7 14.6  26.3
    theta[8]     8.1 8.0  -7.1  3.4  7.8 12.4  25.7
    mu.theta     7.6 5.4  -2.7  4.1  7.6 11.0  18.6
    sigma.theta  6.7 5.9   0.2  2.3  5.3  9.4  21.8
    deviance    60.5 2.3  57.0 59.2 60.1 61.6  66.2
                Rhat n.eff
    theta[1]       1   410
    theta[2]       1   420
    theta[3]       1  1200
    theta[4]       1   610
    theta[5]       1   680
    theta[6]       1   490
    theta[7]       1   300
    theta[8]       1   420
    mu.theta       1   310
    sigma.theta    1   540
    deviance       1  1600
    
    For each parameter, n.eff is a crude measure of effective sample size,
    and Rhat is the potential scale reduction factor (at convergence, Rhat=1).
    
    DIC info (using the rule, pD = Dbar-Dhat)
    pD = 2.9 and DIC = 63.4
    DIC is an estimate of expected predictive error (lower deviance is better).
    plot(schools.sim)

    bugs.data 生成输入文件

    bugs.data(data, dir = getwd(), digits = 5, data.file = “data.txt”)

    bugs.inits 生成初始值文件

    bugs.inits(inits, n.chains, digits, inits.files = paste(“inits”, 1:n.chains, “.txt”, sep = “”))

    bugs.log 读取log文件(summary statistics and DIC information)

    bugs.log(file)

    plot.bugs 画bugs对象

    plot(x, display.parallel = FALSE, …)

    display.parallel :在摘要图的两部分中显示平行的间隔

    print.bugs 输出bugs对象

    print(x, digits.summary = 1, …)

    digits.summary:四舍五入的位数

    read.bugs

    读Markov链蒙特卡罗输出的CODA格式。并返回一个类mcmc.list对象。使用coda包进行进一步的输出分析列表。

    read.bugs(codafiles, …)

    validateInstallOpenBUGS 比较R和openbugs软件运行结果

    write.model 转化R function创建模型文件

    schoolsmodel <- function(){
         for (j in 1:J){
         y[j] ~ dnorm (theta[j], tau.y[j])
         theta[j] ~ dnorm (mu.theta, tau.theta)
         tau.y[j] <- pow(sigma.y[j], -2)
    }
         mu.theta ~ dnorm (0.0, 1.0E-6)
         tau.theta <- pow(sigma.theta, -2)
         sigma.theta ~ dunif (0, 1000)
    }
    ## some temporary filename:
    filename <- file.path(tempdir(), "schoolsmodel.txt")
    ## write model file:
    write.model(schoolsmodel, filename)
    ## and let's take a look:
    file.show(filename)
    LS0tDQp0aXRsZTogIlLor63oqIDvvJpSMk9wZW5CVUdTIg0Kb3V0cHV0OiBodG1sX25vdGVib29rDQotLS0NCiMgUuivreiogO+8mlIyT3BlbkJVR1MNCg0K55So6L+Z5Liq5YyF6LCD55SoQlVHUyBtb2RlbCzliIbliKvnlKjooajmoLzlkozlm77lvaLmpoLov7BpbmZlcmVuY2Xlkoxjb252ZXJnZW5jZe+8jOS/neWtmOS8sOiuoeeahOe7k+aenA0KDQojIyBhcy5idWdzLmFycmF5ICAg6L2s5o2i5oiQYnVncyBvYmplY3QNCg0K5Ye95pWw5oqK6ams5bCU56eR5aSr6ZO+5Lyw6K6h57uT5p6c77yI5LiN5piv5p2l6Ieq5LqOQlVHU++8ie+8jOi9rOaIkEJVR1Mgb2JqZWN077yM5Li76KaB55So5p2lcGxvdC5idWdzIOWxleekuue7k+aenOOAgg0KDQphcy5idWdzLmFycmF5KHNpbXMuYXJyYXksIG1vZGVsLmZpbGU9TlVMTCwgcHJvZ3JhbT1OVUxMLA0KRElDPUZBTFNFLCBESUNPdXRwdXQ9TlVMTCwgbi5pdGVyPU5VTEwsIG4uYnVybmluPTAsIG4udGhpbj0xKQ0KDQpzaW1zLmFycmF5IO+8mjPnu7TmlbDnu4Qgbi5rZWVwLCBuLmNoYWluc+WSjGNvbWJpbmVkIHBhcmFtZXRlciB2ZWN0b3LnmoTplb/luqYNCg0KbW9kZWwuZmlsZSDvvJogT3BlbkJVR1PnvJblhpnnmoQub2RjIOaooeWei+aWh+S7tg0KDQpESUMg77yaIOaYr+WQpuiuoeeul0RJQ+absue6vw0KDQpESUNPdXRwdXQg77yaIERJQ+WAvA0KDQpuLml0ZXIg77ya55Sf5oiQc2ltcy5hcnJheSDmr4/mnaFjaGFpbiDov63ku6PmlbANCg0Kbi5idXJuaW4g77ya5Lii5byD55qE6L+t5Luj5qyh5pWwDQoNCm4udGhpbiDvvJp0aGlubmluZyByYXRlDQoNCiMjIGF0dGFjaC5hbGwg5re75Yqg5pWw5o2u5Yiw5pCc57Si6Lev5b6EDQoNClRoZSBkYXRhYmFzZSBpcyBhdHRhY2hlZC9kZXRhY2hlZCB0byB0aGUgc2VhcmNoIHBhdGjvvIxXaGlsZSBhdHRhY2guYWxsIGF0dGFjaGVzIGFsbCBlbGVtZW50cyBvZiBhbiBvYmplY3QgeCB0byBhIGRhdGFiYXNlIGNhbGxlZCBuYW1lLCBhdHRhY2guYnVncw0KYXR0YWNoZXMgYWxsIGVsZW1lbnRzIG9mIHgkc2ltcy5saXN0IHRvIHRoZSBkYXRhYmFzZSBidWdzLnNpbXMgaXRzZWxmIG1ha2luZyB1c2Ugb2YgYXR0YWNoLmFsbC4NCg0KYXR0YWNoLmFsbCh4LCBvdmVyd3JpdGUgPSBOQSwgbmFtZSA9ICJhdHRhY2guYWxsIikNCmF0dGFjaC5idWdzKHgsIG92ZXJ3cml0ZSA9IE5BKQ0KZGV0YWNoLmFsbChuYW1lID0gImF0dGFjaC5hbGwiKQ0KZGV0YWNoLmJ1Z3MoKQ0KDQp4IDogYnVncyDlr7nosaENCg0Kb3ZlcndyaXRlIO+8mlRSVUUg5Yig6Zmk5YWo5bGA546v5aKD5Lit6KKr5o6p55uW55qE5pWw5o2u77yMIE5BIOivoumXru+8jEZBTFNFDQoNCm5hbWUgOiDnjq/looNuYW1lDQoNCiMjIGJ1Z3Mg5pyA6YeN6KaB77yM55SoUui/kOihjGJ1Z3MNCg0K6Ieq5Yqo6L6T5YWl5YC877yM5ZCv5YqoYnVnc++8jOS/neWtmOe7k+aenA0KDQpidWdzKGRhdGEsIGluaXRzLCBwYXJhbWV0ZXJzLnRvLnNhdmUsIG4uaXRlciwgICAgIG1vZGVsLmZpbGU9Im1vZGVsLnR4dCIsDQpuLmNoYWlucz0zLCBuLmJ1cm5pbj1mbG9vcihuLml0ZXIgLyAyKSwgbi50aGluPTEsDQpzYXZlRXhlYz1GQUxTRSxyZXN0YXJ0PUZBTFNFLA0KZGVidWc9RkFMU0UsIERJQz1UUlVFLCBkaWdpdHM9NSwgY29kYVBrZz1GQUxTRSwNCk9wZW5CVUdTLnBnbT1OVUxMLA0Kd29ya2luZy5kaXJlY3Rvcnk9TlVMTCwNCmNsZWFyV0Q9RkFMU0UsIHVzZVdJTkU9RkFMU0UsIFdJTkU9TlVMTCwNCm5ld1dJTkU9VFJVRSwgV0lORVBBVEg9TlVMTCwgYnVncy5zZWVkPTEsIHN1bW1hcnkub25seT1GQUxTRSwNCnNhdmUuaGlzdG9yeT0oLlBsYXRmb3JtJE9TLnR5cGUgPT0gIndpbmRvd3MiIHwgdXNlV0lORT09VFJVRSksDQpvdmVyLnJlbGF4ID0gRkFMU0UpDQoNCg0KZGF0YSDvvJrmqKHlnovkuK3kvb/nlKjnmoTmlbDmja4NCg0KaW5pdHMg77yabiBjaGFpbiDnmoTlhYPntKDliJfooajvvIzmr4/kuIDkuKropoHntKDmmK/kuIDkuKrmqKHlnovliJ3lp4vlgLzliJfooajvvIzmiJbogIXkuIDkuKrnlJ/miJDliJ3lp4vlgLzlvpdmdW5jdGlvbg0KDQpwYXJhbWV0ZXJzLnRvLnNhdmUg77yaIOmcgOimgeiiq+iusOW9leeahOWPguaVsOWQjeWQkemHjw0KDQptb2RlbC5maWxlIO+8miBtb2RlbCDmlofku7YudHh0DQoNCm4uY2hhaW5zIDog6buY6K6kM+adoQ0KDQpuLml0ZXIg77ya5q+P5p2h6ZO+55qE6L+t5Luj5qyh5pWw77yM6buY6K6kMjAwMA0KDQpuLnRoaW4g77yaIFRoaW5uaW5nIHJhdGUuIOato+aVtOaVsO+8jOm7mOiupOaYrzHvvIwNCg0Kc2F2ZUV4ZWMg77ya5L2/55SoYmFzZW5hbWUo5qih5Z6LLmZpbGUp5L+d5a2YT3BlbkJVR1PmiafooYznmoTph43mlrDlkK/liqjmmKDlg4/jgIINCg0KcmVzdGFydCDvvJrmiafooYzku47kuIrmrKHmiafooYznmoTmnIDlkI7nirbmgIHmgaLlpI3vvIzlrZjlgqjlnKjlt6XkvZznm67lvZXkuK3nmoQuYnVn5paH5Lu25Lit44CCDQoNCmRlYnVnIO+8miDpu5jorqRGQUxTRSzmraPlnKjov5DooYzooYzml7ZPcGVuYnVncyDpobXpnaLlhbPpl60NCg0KRElDIO+8muiuoeeul2RldmlhbmNlLO+8jHBE77yM5ZKMRElD44CCDQoNCmRpZ2l0cyDvvJrmnInmlYjlsI/mlbDkvY3mlbANCg0KY29kYVBrZyDvvJpGQUxTRSDov5Tlm54gYnVnc+Wvueixoe+8jOWQpuWImei+k+WHuu+8jOeUqGNvZGEg5YyFIHJlYWQuYnVncyDor7vlj5bvvIwNCg0KT3BlbkJVR1MucGdtIO+8mumAmuWQkU9wZW5CVUdT5Y+v5omn6KGM56iL5bqP55qE5a6M5pW06Lev5b6E44CCDQoNCndvcmtpbmcuZGlyZWN0b3J577yaT3BlbkJVR1PnmoTovpPlhaXlkozovpPlh7rlsIblrZjlgqjlnKjmraTnm67lvZXkuK07DQoNCmNsZWFyV0Qg77ya5piv5ZCm6L+Z5Lqb5paH5Lu255qE4oCcZGF0YS50eHTigJ3jgIHigJxpbml0KDE6bi5jaGFpbnMpLiB0eHTigJ0sImxvZy5vZGPigJ3jgIHigJxjb2RhSW5kZXgudHh04oCd5ZKM4oCcY29kYVsxOm5jaGFpbl0udHh04oCd57uT5p2f5pe25Yig6Zmk44CCDQoNCmJ1Z3Muc2VlZCDvvJpPcGVuQlVHU+maj+acuuenjeWtkO+8jDEtMTTmlbTmlbANCg0Kc3VtbWFyeS5vbmx5IO+8miBUVVJFICzku4Xlr7npnZ7luLjlv6vpgJ/nmoTliIbmnpDnu5nlh7rkuobkuIDkuKrlj4LmlbDmpoLopoENCg0Kc2F2ZS5oaXN0b3J5IDogVFVSRSzmnIDlkI7nlLvlh7p0cmFjZQ0KDQpgYGB7cn0NCiMgQW4gZXhhbXBsZSBtb2RlbCBmaWxlIGlzIGdpdmVuIGluOg0KbW9kZWwuZmlsZSA8LSBzeXN0ZW0uZmlsZShwYWNrYWdlPSJSMk9wZW5CVUdTIiwgIm1vZGVsIiwgInNjaG9vbHMudHh0IikNCiMgTGV0J3MgdGFrZSBhIGxvb2s6DQpwcmludChtb2RlbC5maWxlKQ0KZmlsZS5zaG93KG1vZGVsLmZpbGUpDQpgYGANCiAgIG1vZGVsIHsNCiAgICAgICBmb3IgKGogaW4gMTpKKXsNCiAgICAgICAgIHlbal0gfiBkbm9ybSAodGhldGFbal0sIHRhdS55W2pdKQ0KICAgICAgICAgdGhldGFbal0gfiBkbm9ybSAobXUudGhldGEsIHRhdS50aGV0YSkNCiAgICAgICAgIHRhdS55W2pdIDwtIHBvdyhzaWdtYS55W2pdLCAtMikNCiAgICAgICB9DQogICAgICAgbXUudGhldGEgfiBkbm9ybSAoMC4wLCAxLjBFLTYpDQogICAgICAgdGF1LnRoZXRhIDwtIHBvdyhzaWdtYS50aGV0YSwgLTIpDQogICAgICAgc2lnbWEudGhldGEgfiBkdW5pZiAoMCwgMTAwMCkNCiAgICAgfSANCiAgICAgDQpgYGB7cn0NCmRhdGEoc2Nob29scykNCnNjaG9vbHMNCmBgYA0KYGBge3J9DQpKIDwtIG5yb3coc2Nob29scykNCnkgPC0gc2Nob29scyRlc3RpbWF0ZQ0Kc2lnbWEueSA8LSBzY2hvb2xzJHNkDQpkYXRhIDwtIGxpc3QgKCJKIiwgInkiLCAic2lnbWEueSIpDQpkYXRhDQpgYGANCmBgYHtyfQ0KaW5pdHMgPC0gZnVuY3Rpb24oKXsNCiAgICAgIGxpc3QodGhldGE9cm5vcm0oSiwgMCwgMTAwKSwgbXUudGhldGE9cm5vcm0oMSwgMCwgMTAwKSxzaWdtYS50aGV0YT1ydW5pZigxLCAwLCAxMDApKQ0KfQ0KcGFyYW1ldGVycyA8LSBjKCJ0aGV0YSIsICJtdS50aGV0YSIsICJzaWdtYS50aGV0YSIpDQpgYGANCmBgYHtyfQ0Kc2Nob29scy5zaW0gPC0gYnVncyhkYXRhLCBpbml0cywgcGFyYW1ldGVycywgbW9kZWwuZmlsZSwNCm4uY2hhaW5zPTMsIG4uaXRlcj01MDAwKQ0KcHJpbnQoc2Nob29scy5zaW0pDQpgYGANCmBgYHtyfQ0KcGxvdChzY2hvb2xzLnNpbSkNCmBgYA0KDQojIyBidWdzLmRhdGEgICAg55Sf5oiQ6L6T5YWl5paH5Lu2DQoNCmJ1Z3MuZGF0YShkYXRhLCBkaXIgPSBnZXR3ZCgpLCBkaWdpdHMgPSA1LCBkYXRhLmZpbGUgPSAiZGF0YS50eHQiKQ0KDQojIyBidWdzLmluaXRzICAg55Sf5oiQ5Yid5aeL5YC85paH5Lu2DQoNCmJ1Z3MuaW5pdHMoaW5pdHMsIG4uY2hhaW5zLCBkaWdpdHMsDQogICAgaW5pdHMuZmlsZXMgPSBwYXN0ZSgiaW5pdHMiLCAxOm4uY2hhaW5zLCAiLnR4dCIsIHNlcCA9ICIiKSkNCiAgICANCiMjIGJ1Z3MubG9nICAg6K+75Y+WbG9n5paH5Lu277yIc3VtbWFyeSBzdGF0aXN0aWNzIGFuZCBESUMgaW5mb3JtYXRpb27vvIkNCg0KYnVncy5sb2coZmlsZSkNCg0KIyMgcGxvdC5idWdzICDnlLtidWdz5a+56LGhDQoNCg0KcGxvdCh4LCBkaXNwbGF5LnBhcmFsbGVsID0gRkFMU0UsIC4uLikNCg0KZGlzcGxheS5wYXJhbGxlbCDvvJrlnKjmkZjopoHlm77nmoTkuKTpg6jliIbkuK3mmL7npLrlubPooYznmoTpl7TpmpQNCg0KIyMgcHJpbnQuYnVncyDovpPlh7pidWdz5a+56LGhDQoNCnByaW50KHgsIGRpZ2l0cy5zdW1tYXJ5ID0gMSwgLi4uKQ0KDQpkaWdpdHMuc3VtbWFyee+8muWbm+iIjeS6lOWFpeeahOS9jeaVsA0KDQojIyByZWFkLmJ1Z3MgIA0KDQror7tNYXJrb3bpk77okpnnibnljaHnvZfovpPlh7rnmoRDT0RB5qC85byP44CC5bm26L+U5Zue5LiA5Liq57G7bWNtYy5saXN05a+56LGh44CC5L2/55SoY29kYeWMhei/m+ihjOi/m+S4gOatpeeahOi+k+WHuuWIhuaekOWIl+ihqOOAgg0KDQpyZWFkLmJ1Z3MoY29kYWZpbGVzLCAuLi4pDQoNCiMjIHZhbGlkYXRlSW5zdGFsbE9wZW5CVUdTIOavlOi+g1LlkoxvcGVuYnVnc+i9r+S7tui/kOihjOe7k+aenA0KDQojIyB3cml0ZS5tb2RlbCAg6L2s5YyWUiBmdW5jdGlvbuWIm+W7uuaooeWei+aWh+S7tg0KDQpgYGB7cn0NCnNjaG9vbHNtb2RlbCA8LSBmdW5jdGlvbigpew0KICAgICBmb3IgKGogaW4gMTpKKXsNCiAgICAgeVtqXSB+IGRub3JtICh0aGV0YVtqXSwgdGF1Lnlbal0pDQogICAgIHRoZXRhW2pdIH4gZG5vcm0gKG11LnRoZXRhLCB0YXUudGhldGEpDQogICAgIHRhdS55W2pdIDwtIHBvdyhzaWdtYS55W2pdLCAtMikNCn0NCiAgICAgbXUudGhldGEgfiBkbm9ybSAoMC4wLCAxLjBFLTYpDQogICAgIHRhdS50aGV0YSA8LSBwb3coc2lnbWEudGhldGEsIC0yKQ0KICAgICBzaWdtYS50aGV0YSB+IGR1bmlmICgwLCAxMDAwKQ0KfQ0KIyMgc29tZSB0ZW1wb3JhcnkgZmlsZW5hbWU6DQpmaWxlbmFtZSA8LSBmaWxlLnBhdGgodGVtcGRpcigpLCAic2Nob29sc21vZGVsLnR4dCIpDQojIyB3cml0ZSBtb2RlbCBmaWxlOg0Kd3JpdGUubW9kZWwoc2Nob29sc21vZGVsLCBmaWxlbmFtZSkNCiMjIGFuZCBsZXQncyB0YWtlIGEgbG9vazoNCmZpbGUuc2hvdyhmaWxlbmFtZSkNCmBgYA0KDQo=
  • 相关阅读:
    第二周作业
    查找整数
    第八周作业
    第七周作业
    第六周作业
    第五周作业
    第四周作业
    第三周作业
    第二周作业
    7-2求最大值及其下标
  • 原文地址:https://www.cnblogs.com/lichunl/p/9030067.html
Copyright © 2020-2023  润新知