Pergunta

Eu tenho um dados que parece isto. E meu código abaixo simplesmente calcula algum valor e vincula o vetor de saída aos quadros de dados originais.

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);

Eu tenho algumas perguntas sobre o acima:

  1. Mas por que a função 'write ()' acima fornece esse erro. Existe uma maneira de consertar isso?

    Erro em CAT (Lista (...), arquivo, setembro, preenchimento, etiquetas, Apêndos): Argumento 1 (tipo 'Lista') não pode ser atendido por 'Cat' Chamadas: Write -> Cat Execution parado

  2. Os nomes para o vetor Binded no quadro de dados são adicionados como "errProb" para todas as 10 novas colunas. Existe uma maneira de nomeá -los como "errProb1", "errProb2", etc?

Foi útil?

Solução

Primeiro, não há necessidade dos semi-corons, R sabe que o fim da linha é uma pausa.


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. Eu acredito que você está procurando a função Write.table

  2. Use a função Colnames

Outras dicas

  1. Você pode usar write.table () em vez de write () para usar com os argumentos especificados acima. Este último é adequado para impressão de matrizes (mas pode exigir especificar o NCOL ou transpor a matriz de entrada), mas o primeiro é mais geral e eu o uso para matrizes e quadros de dados.

  2. Você pode substituir

    err_prob <- pnorm (dat $ v4, mean = meanl, sd = stdevl)

    Problist <- cbind (ProBlist, err_prob)

com

assign(sprintf("err_prob%d",lmer),pnorm(dat$V4,mean=meanl, sd=stdevl))
problist <- eval(parse(text=sprintf("cbind(problist,err_prob%d)", lmer)))

A última linha analisa a sequência do caractere como uma expressão e a avalia. Você pode fazer alternativa

colnames(problist) <- sprintf("err_prob%d",1:10)

a posteriori

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top