Ich habe eine Lösung, die funktioniert, aber würde Ideen zu schätzen, den Code zu verbessern, um Schleifen zu vermeiden, wenn möglich.Erstellen Master-Liste Hinzufügen von Iterationen von Werten in einer anderen Liste mit bekannten Intervall in R
ich eine Liste von Werten haben, wird diese lesen aus einer CSV-Datei in, aber die Form
startingvalues = c(1, 7, 20, 32, 47)
Ich möchte eine neue Liste erstellen, die in jedem dieser Startwerte liest und fügt die nächste 2 (oder 7 oder 15 etc.) Zahlen, dann geht es zum nächsten. Für das obige Beispiel wäre das
newlist = c(1,2,3,7,8,9,20,21,22,32,33,34,47,48,49)
Ich habe Code, der funktioniert, aber ich vermute, dass es eine elegantere Möglichkeit ist, dies zu tun. Ich bin nicht besonders besorgt über die Geschwindigkeit, möchte aber die Schleife vermeiden, wenn es einen besseren Weg dafür gibt.
newlist = c() # initialise an empty list
for (i in 1:length(startingvalues){
list1 = seq(startingvalues[i,1],startingvalues[i,1]+2, by = 1)
newlist = c(newlist,list1)
}
Alle Vorschläge zur Verbesserung meiner Codierung würden geschätzt. Dies könnte der beste Weg sein, dies zu tun, ich vermute jedoch, dass dies nicht der Fall ist.
Dies funktioniert perfekt, wenn ich Startwerte manuell eingeben (wie ich im obigen Beispiel getan habe), aber ich finde, wenn ich sie aus einem csv mit Startwerten <-read.csv ("startvalues.csv") einliest, tut dies nicht t arbeiten, wie es eine Datafram ist e. Ich habe versucht, as.list (Startwerte) zu verwenden, aber immer noch kein Glück. Ich löste das Problem, indem ich einfach so definierte, wie ich es im Beispiel getan hatte. Ich dachte einfach, ich würde dies notieren, wie ich in der Frage erwähnt habe, die ich von csv gelesen habe. –
Nun, vermutlich hat Ihr data.frame mehrere Spalten. Um den Vektor aus der ersten Spalte zu extrahieren, sollten Sie 'startvalues [[1]]' – MrFlick