【问题标题】:On Data Frame: Writing to File and Naming Binded Vector in R关于数据框:在 R 中写入文件并命名绑定向量
【发布时间】:2023-03-27 13:25:01
【问题描述】:

我有一个看起来像 this 的数据。下面是我的代码 只需计算一些值并将输出向量绑定到 原始数据帧。

options(width=200)

args<-commandArgs(trailingOnly=FALSE)
dat <- read.table("http://dpaste.com/89376/plain/",fill=T);

problist <- c();

for (lmer in 1:10) {
   meanl <- lmer;
   stdevl <- (0.17*sqrt(lmer));
   err_prob <- pnorm(dat$V4,mean=meanl, sd=stdevl);
   problist <- cbind(problist,err_prob);
}

dat <- cbind(dat,problist)
#print(dat,row.names=F, column.names=F,justify=left)

# Why this breaks?
write(dat, file="output.txt", sep="\t",append=F);

我有几个关于上述问题的问题:

  1. 但是为什么上面的'write()'函数会出现这个错误。有办法解决吗?

    cat(list(...), file, sep, fill, labels, append) 中的错误: 参数 1(类型 'list')不能由 'cat' 处理 调用:写 -> 猫 执行停止

  2. 数据框中绑定向量的名称被添加为所有 10 个新的“errprob” 列。有没有办法将它们命名为“errprob1”、“errprob2”等?

【问题讨论】:

    标签: r vector dataframe writefile


    【解决方案1】:

    首先,不需要分号,R 知道行尾是一个中断。

    
    for (lmer in 1:10){
        meanl <- lmer
        stdevl <- (0.17*sqrt(lmer))
        err_prob <- pnorm(dat$V4,mean=meanl, sd=stdevl)
        problist <- cbind(problist,err_prob)
    }
    colnames(problist)<-paste("errorprob",1:10,sep="")
    dat <- cbind(dat,problist)
    write.table(dat, file="output.txt", sep="\t",append=F)
    
    1. 相信你在找write.table函数

    2. 使用 colnames 函数

    【讨论】:

    • 最好事先创建矩阵。 `problist
    【解决方案2】:
    1. 您可以使用 write.table() 而不是 write() 来使用上面指定的参数。后者适合打印矩阵(但可能需要指定 ncol 或转置输入矩阵),但前者更通用,我将它用于矩阵和数据帧。

    2. 你可以替换

      err_prob

      概率列表

    assign(sprintf("err_prob%d",lmer),pnorm(dat$V4,mean=meanl, sd=stdevl))
    problist <- eval(parse(text=sprintf("cbind(problist,err_prob%d)", lmer)))
    

    最后一行将字符串解析为表达式,然后对其求值。你也可以这样做

    colnames(problist) <- sprintf("err_prob%d",1:10)
    

    后验

    【讨论】:

      猜你喜欢
      • 2014-01-12
      • 1970-01-01
      • 2019-11-10
      • 2021-03-20
      • 2019-08-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-09
      相关资源
      最近更新 更多