在数据框架上:在R中写入文件和命名绑定矢量

时间:2009-09-04 04:38:59

标签: r vector dataframe writefile

我的数据看起来像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(类型'列表')不能由'cat'处理 电话:写 - &gt;猫 执行暂停

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

2 个答案:

答案 0 :(得分:4)

首先,不需要分号,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函数

答案 1 :(得分:2)

  1. 您可以使用write.table()而不是write()来使用上面指定的参数。后者适用于打印矩阵(但可能需要指定ncol或转置输入矩阵),但前者更通用,我将它用于矩阵和数据帧。

  2. 您可以替换

    err_prob&lt; - pnorm(dat $ V4,mean = meanl,sd = stdevl)

    problist&lt; - cbind(problist,err_prob)

  3. 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)
    

    a posteriori