Sur l'image de données: écriture dans le fichier et dénomination binded vecteur dans R

StackOverflow https://stackoverflow.com/questions/1377248

  •  21-09-2019
  •  | 
  •  

Question

J'ai données qui ressemble à cette . Et mon code ci-dessous calculer simplement une certaine valeur et lie le vecteur de sortie à la trames de données d'origine.

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

J'ai quelques questions au sujet de ce qui précède:

  1. Mais pourquoi la fonction « écriture () » ci-dessus donne cette erreur. Est-il possible de le réparer?

    Erreur dans le chat (liste (...), fichier, indép, remplissage, étiquettes, ajouter):   Argument 1 (type « liste ») ne peut pas être manipulé par « chat » Appels: écrire -> chat Exécution interrompue

  2. Noms de vecteur binded dans la trame de données est ajouté comme « errprob » pour les 10 nouveaux Colonnes. Est-il possible de les nommer comme « errprob1 », « errprob2 », etc?

Était-ce utile?

La solution

Tout d'abord, pas besoin de les points-virgules, R sait que la fin de la ligne est une pause.


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. Je crois que vous êtes à la recherche de la fonction write.table

  2. Utilisez la fonction colnames

Autres conseils

  1. Vous pouvez utiliser write.table () au lieu d'écrire () à utiliser avec les arguments spécifiés ci-dessus. Ce dernier est adapté pour les matrices d'impression (mais peut exiger la spécification ncol ou la transposition de la matrice d'entrée), mais le premier est plus générale et je l'utilise pour les deux matrices et des trames de données.

  2. Vous pouvez remplacer

    err_prob <- pnorm (dat V4 $, moyenne = meanl, sd = stdevl)

    problist <- cbind (problist, err_prob)

avec

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 dernière ligne parse la chaîne de caractères comme une expression, puis l'évalue. Vous pouvez encore faire

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

a posteriori

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top