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:

  1. 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

  2. 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.?

¿Fue útil?

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)

  1. Creo que usted está buscando para la función write.table

  2. Utilice la función COLNAMES

Otros consejos

  1. 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.

  2. 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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top