2013-05-08 16 views
6

Ho determinate variabili che lm in R esegue automaticamente il wrapping con apici inversi/apici posteriori, ad es. variabili che hanno due punti nei nomi.Rimozione di apici inversi in uscita R

Dopo l'elaborazione, sto cercando di scrivere le variabili ei coefficienti del modello lineare con write.table. Sfortunatamente anche i backtick sono scritti.

Come è possibile impedire la scrittura di questi apici inversi?

Per dare un semplice ma realistico esempio:

d <- data.frame(`1`=runif(10), y=runif(10), check.names=F) 
l <- lm(y ~ `1`, d) 
write.table(data.frame(l$coefficients), file="lm.coeffs", quote=F, sep="\t", col.names=F) 

Il file lm.coeffs sarà - ovviamente - hanno `1` nella prima colonna dell'output piuttosto che 1. Al di fuori della postelaborazione in qualche altro script, come posso rimuovere i backtick dall'output?

risposta

9

È possibile eseguire post-elaborazione in R. Invece di un file, memorizzare l'output in una variabile utilizzando capture.output. Rimuovere i backtick usando gsub. Infine, stampare l'output in un file utilizzando cat:

report <- capture.output(write.table(data.frame(l$coefficients), 
         quote = FALSE, sep = "\t", col.names = FALSE)) 

cat(gsub("`", "", report), sep = "\n", file = "lm.coeffs") 
+0

+1 non avevo mai pensato a quello che 'write.table' torna invisibile! – mnel