werte aus for-schleife speichern

Wie rufe ich R-Funktionen auf, wie selektiere ich Daten, ich weiß nicht genau ....

Moderatoren: EDi, jogo

jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: werte aus for-schleife speichern

Beitrag 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
bigben
Beiträge: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Re: werte aus for-schleife speichern

Beitrag 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
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
jasi
Beiträge: 7
Registriert: Di Feb 05, 2019 4:34 pm

Re: werte aus for-schleife speichern

Beitrag 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 :)
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: werte aus for-schleife speichern

Beitrag 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
jasi
Beiträge: 7
Registriert: Di Feb 05, 2019 4:34 pm

Re: werte aus for-schleife speichern

Beitrag 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
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: werte aus for-schleife speichern

Beitrag 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
jasi
Beiträge: 7
Registriert: Di Feb 05, 2019 4:34 pm

Re: werte aus for-schleife speichern

Beitrag 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í
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: werte aus for-schleife speichern

Beitrag 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
jasi
Beiträge: 7
Registriert: Di Feb 05, 2019 4:34 pm

Re: werte aus for-schleife speichern

Beitrag 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
bigben
Beiträge: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Re: werte aus for-schleife speichern

Beitrag 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
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Antworten