Konvertieren for-Schleife anwenden

In R, wie ersetzt man den folgenden code mithilfe von Funktionen wie apply, lapply, rapply, do.call usw.?

u <- 10:12
slist <- list()

for (i in 1:length(u)) {
  p <- combn(u, i) 
  for (j in 1:ncol(p)) {
    s <- paste(p[,j], collapse=",")
    slist[[s]] <- 0
  }
}

Für diesen Teil:

  for (j in 1:ncol(p)) {
    s <- paste(p[,j], collapse=",")

Habe ich versucht, etwas wie:

  s <- apply(p, 2, function(x) paste(x, collapse=","))

Die funktioniert. Aber dann slist[[s]] <- 0 im selben for-Schleife, ich weiß nicht, was zu tun ist.

Edit: Dies ist, was ich versuche zu tun. Für den Vektor u ist, bin ich produziert, eine Liste aller Teilmengen in der Richtung. Dann für jede Teilmenge, ich bin die Zuordnung zu s, dann mit dem string s wie der name eines Elements in slist. Irgendwie seltsam, ich weiß, aber es ist für eine Hausaufgabe. Für den code oben, würde dieser die ersten 5 Elemente slist:

 > slist
 $`10`
 [1] 0

 $`11`
 [1] 0

 $`12`
 [1] 0

 $`10,11`
 [1] 0

 $`10,12`
 [1] 0

Yeah, ich versuche nur zu lernen, wie man anwenden und Sachen richtig.

  • Ihre for Schleife erzeugt eine eher ungewöhnliche Liste. Vielleicht möchten Sie erklären, was es ist, Sie wirklich versuchen, zu tun?
  • Okay, fertig! Ich bearbeitet die original-Beitrag.
InformationsquelleAutor Crystal | 2011-11-15
Schreibe einen Kommentar