Split ein string-Vektor bei Leerräumen
Ich habe folgenden Vektor:
tmp3 <- c("1500 2", "1500 1", "1510 2", "1510 1", "1520 2", "1520 1", "1530 2",
"1530 1", "1540 2", "1540 1")
Möchte ich einfach behalten, die zweite Zahl in jedem der Atome, die von diesem Vektor, so würde es Lesen:
c(2,1,2,1,2,1,2,1,2,1)
- Kannst du vielleicht auch akzeptieren eine Antwort zu markieren, die Frage als "gelöst"?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wahrscheinlich gibt es ein besserer Weg, aber hier sind zwei Ansätze mit
strsplit()
:Den als.numeric() nicht notwendig sein, wenn Sie Zeichen verwenden, die...
as.numeric(data.frame(strsplit(as.list(df$columnx), " "))[2,])
Könnte man
read.table
auftextConnection
:dann
so
X$V2
ist, was Sie brauchen.Es hängt ein wenig davon ab, wie eng die tatsächlichen Daten übereinstimmt, die Beispiel-Daten, die Sie gegeben haben. Ich Sie sind nur versuchen, alles zu bekommen, nach der Raum, die Sie verwenden können
gsub
:Wenn Sie versuchen, zu implementieren, in der Regel komplizierter als bei "nimm alles nach dem Leerzeichen", müssen Sie ein komplizierter regular expresion.
gsub
wird das ersetzen-regex-matches mit etwas anderem. In diesem Fall verwenden wir die regex -.+\\s+
und ersetzen keine Treffer finden wir mit den leeren string""
. Die regex-übersetzt "mit etwas am Anfang, aber es hat am Ende mit einem Platz" (das Leerzeichen ist so geschrieben, wie\\s
)Was ich denke, ist der eleganteste Weg, dies zu tun
Wenn Sie es brauchen, um eine ganze Zahl sein
res <- as.numeric(sapply(...))
als gut funktioniert;storage.mode
ist ein wenig beängstigendSo lange, wie Sie Ihre strings sind immer gleich lang, dies sollte den trick tun.
(Und, natürlich, werden Sie nicht haben, um geben Sie die argument-Namen -
substr(tmp3, 6, 6)
funktioniert ebenfalls sehr gut)Dies sollte es tun:
Wenn Sie einen numerischen Vektor, verwenden Sie
Weitere option ist
scan()
. Um den zweiten Wert, den wir verwenden können, eine logische Teilmenge.Einen einfacheren Weg, um split 1 Spalte in 2 Spalten über Daten.Tabelle