データフレーム上:R でのファイルへの書き込みとバインドされたベクトルの名前付け
質問
次のようなデータがあります これ. 。そして、以下の私のコードは、ある程度の値を計算し、出力ベクトルを元のデータフレームにバインドします。
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);
上記に関していくつか質問があります。
しかし、なぜ上記の「write()」関数がこのエラーを引き起こすのでしょうか。それを修正する方法はありますか?
cat(list(...)、file、sep、fill、labels、append) のエラー:引数1(タイプ 'list')は、「cat」コールで処理できません。書き込み - >猫の実行が停止しました
データフレーム内のバインドベクトルの名前は、10の新しい列すべてに対して「errprob」として追加されます。「errprob1」、「errprob2」などの名前を付ける方法はありますか?
解決
まず、セミコロンは必要ありません。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)
write.table 関数を探していると思います。
列名関数を使用する
他のヒント
上記で指定した引数とともに使用するには、write() の代わりに write.table() を使用できます。後者は行列の出力に適しています (ただし、ncol の指定または入力行列の転置が必要になる場合があります) が、前者はより一般的であり、私は行列とデータ フレームの両方に使用します。
交換できます
err_prob <- pnorm(dat$V4,mean=meanl, sd=stdevl)
problist <- cbind(problist,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)
事後的に
所属していません StackOverflow