En el fotograma de datos: Escribir a Archivo y Naming binded del vector en R
Pregunta
Tengo un dato que parece este . Y mi código de abajo simplemente calcular un valor y se une el vector de salida a la marcos de datos original.
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);
Tengo algunas preguntas con respecto a la anterior:
-
Pero por qué la función 'write ()' anterior da este error. ¿Hay alguna manera de solucionarlo?
Error en el gato (lista (...), archivo, sep, llenar, etiquetas, anexar): el argumento 1 (tipo 'lista') no puede ser manejado por 'gato' Las llamadas: escribir -> gato Se detuvo la ejecución
-
Nombres de vector binded en la trama de datos se añade como "errprob" para todos 10 nuevo columnas. ¿Hay una manera de nombrarlos como "errprob1", "errprob2", etc.?
Solución
En primer lugar, no hay necesidad de los puntos y comas, R sabe que el final de la línea es un descanso.
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)
-
Creo que usted está buscando para la función write.table
-
Utilice la función COLNAMES
Otros consejos
-
Puede utilizar write.table () en lugar de escribir () para usar con los argumentos especificados anteriormente. Este último es adecuado para matrices de impresión (pero puede requerir especificando ncol o la transposición de la matriz de entrada), pero el primero es más general y lo uso para ambas matrices y tramas de datos.
-
Puede reemplazar
err_prob <- Pnorm (dat $ V4, media = meanl, sd = stdevl)
problist <- cbind (problist, err_prob)
con
assign(sprintf("err_prob%d",lmer),pnorm(dat$V4,mean=meanl, sd=stdevl))
problist <- eval(parse(text=sprintf("cbind(problist,err_prob%d)", lmer)))
La última línea analiza la cadena de caracteres como una expresión y luego se evalúa. Usted puede hacer alternativamente
colnames(problist) <- sprintf("err_prob%d",1:10)
a posteriori