Seite 2 von 3

Re: werte aus for-schleife speichern

Verfasst: Mi Feb 06, 2019 4:18 pm
von jogo
Hallo jasi,
jasi hat geschrieben: Mi Feb 06, 2019 4:00 pm die Schleife sollte pro Durchlauf (i) die Lasso-Cox-Regression für einen zuvor eingelesenen Datensatz berechnen. Pro Durchlauf soll mir R die coefficients (CoefficientenListe) und die Varibalen " active.coefficient, active.index und lambd.min" ausgeben. Das macht der Code auch und gibt mir in der Console pro Durchlauf alles an.
Du meinst Ausgaben per print(), richtig?
Jedoch möchte ich mit dem letzten Befehl write.table, dass er mir für alle Durchläufe i alle Variablen (=alle pro Durchlauf) in einer Textdatei ausgibt.
Leider gibt er mir aber immer nur die Werte für den letzten Durchlauf aus. Das heißt er überschreibt alle Werte.

Wie bekomme ich das hin, dass ich alle Werte für jede Iteration mit write.table ausgespuckt bekomme?
write.table() ist eigentlich nicht das geeignete Mittel, um Daten aus einer schleife zu sammeln. Besser wäre ein lapply(), um die Daten zu sammeln.
Ich bin regelrecht am verzweifeln
DarkwingDuck sagt: "Verzweifelte Situationen erfordern verzweifelte Maßnahmen"

Ich schaue mir das mal heute Abend genauer an und model den Code etwas um.

Gruß, Jörg

Re: werte aus for-schleife speichern

Verfasst: Mi Feb 06, 2019 4:24 pm
von bigben
jogo hat geschrieben: Mi Feb 06, 2019 4:18 pm
Ich bin regelrecht am verzweifeln
DarkwingDuck sagt: "Verzweifelte Situationen erfordernverzweifelte Maßnahmen"
Mehr zum Thema Verzweiflung im Statistikforum findet sich im Nachbarforum: http://www.statistik-forum.de/nutzung-d ... t8026.html

Re: werte aus for-schleife speichern

Verfasst: Mi Feb 06, 2019 4:39 pm
von jasi
@Jörg
exakt mit der print() Funktion gibt er mir in der console das aus was ich möchte..

Ich glaube ich habe es hinbekommen, bin mir aber nicht so sicher, ob das die eleganteste Lösung ist. Immerhin bekomme ich endlich das raus was ich wollte.
Gerne lasse ich mich aber auch von einer schöneren Lösung inspirieren, um meinen Horizont bezüglich der R-Programmierung zu erweitern (@Jörg)

Danke euch beiden (append = TRUE hat geholfen)

Liebe Grüße
Jasi :)

Re: werte aus for-schleife speichern

Verfasst: Mi Feb 06, 2019 5:05 pm
von jogo
Bei mir darf der Code so aussehen:

Code: Alles auswählen

x_exp<-as.matrix(data[1:100,2:96])
y_exp<-Surv(data$timeDFS[1:100],data$statusDFS[1:100])

Fit <- function(i=0) {
  fit <- glmnet::glmnet(x_exp,y_exp,family="cox", alpha=1)
  t <- floor(runif(1, 1, 100));  print(paste0("ZV:", t))
  set.seed(t)
  cv.fit <- cv.glmnet(x_exp,y_exp,family="cox", alpha=1)
  plot(cv.fit)
  lambda.min <- cv.fit$lambda.min
  
  coefficients <- coef(fit,s=cv.fit$lambda.min)
  active.index <- which(coefficients!=0)
  active.coefficients <- coefficients[active.index]
  print(paste0(active.index))
  list(lambda.min=lambda.min, Coeff=coefficients, aCoef=active.coefficients)
}

L <- lapply(0:3, Fit)
Vielleicht geht auch:

Code: Alles auswählen

replicate(4, Fit())
Gruß, Jörg

Re: werte aus for-schleife speichern

Verfasst: Mi Feb 06, 2019 5:26 pm
von jasi
Hi Jörg,

vielen Dank.
Aber die werte für alle durchläufe werden nicht in einer extra Datei geschrieben oder?
Bspw in eine Excel/ods oder txt Datei

Grüße

Re: werte aus for-schleife speichern

Verfasst: Mi Feb 06, 2019 5:32 pm
von jogo
Hallo jasi,

im Falle von

Code: Alles auswählen

L <- lapply(0:3, Fit)
stehen die Werte in der Liste L (genaugenommen eine Liste von Listen).
Es wird keine Datei geschrieben. Diese Variante ist etwas für den Fall, dass auch die weitere Verarbeitung in R geschehen soll.

Gruß, Jörg

Re: werte aus for-schleife speichern

Verfasst: Mi Feb 06, 2019 5:46 pm
von jasi
Okay, aber ich bräuchte die werte aus lapply am besten in einer ods-datei. Das habe ich soeben funktioniert, aber das haut nicht so ganz hin

Liebe Grüße
Jasí

Re: werte aus for-schleife speichern

Verfasst: Mi Feb 06, 2019 8:41 pm
von jogo
Hallo Jasí,

kannst Du bitte beschreiben, wie die Tabelle aussehen soll?
Dann bräuchten wir noch den output von

Code: Alles auswählen

dput(lapply(0:4, Fit))
(Den output bitte in die nächste Nachricht kopieren.)

Ansonsten habe ich noch dies gefunden:
https://stackoverflow.com/questions/259 ... files-in-r

Gruß, Jörg

Re: werte aus for-schleife speichern

Verfasst: Do Feb 07, 2019 4:12 pm
von jasi
Hallo Jörg,

so soll mein Output aussehen: (Output bei einem durchlauf)

"active.index" "active.coefficients" "lambda.min"
"1" 2 0.0018481236483479 0.132361925365147
"2" 4 0.0153739698494634 0.132361925365147
"3" 9 9.43858351639273e-06 0.132361925365147
"4" 12 0.000479023848089405 0.132361925365147
"5" 36 6.42744020447423 0.132361925365147
"6" 63 6.71478470091944e-06 0.132361925365147

mit meinem Code bekomme ich das auch hin. Jedoch nur in einer Textdatei. Ich bräuchte den Output in einer ODS Datei

Liebe Grüße

Re: werte aus for-schleife speichern

Verfasst: Do Feb 07, 2019 4:26 pm
von bigben
Warum muss es ODS sein? OpenOffice kann doch bestimmt die Datei lesen, die Du da hast.
Ansonsten https://cran.r-project.org/web/packages ... index.html

LG,
Bernhard