2017-12-06 25 views
-4

Wenn ich einen Datenrahmen, welche Spalten wie unten:Wie alle Listenwerte in jeder Spalte in einem Datenrahmen ersetzen

a1 <- c("Hello", "World") 
b1 <- c("[1, 2]", "[1,2,3]") 
c1 <- c("[1, 2, 3, 3]", "[1, 4, 5, 6]") 
d1 <- c("[]", "[1]") 


data <- data.frame(a1, b1, c1, d1) 

ich alle Spalten ersetzen will, die Liste Werte mit der Länge von die Liste stattdessen. Ich habe versucht, einige Funktionen anzuwenden, aber ich konnte es nicht zum Laufen bringen.

+2

, die nicht gültig R-Code ist ... – Sotos

+0

dummen Fehler, lol. Korrigiert es. –

+0

Immer noch kein gültiger R-Code. Hast du diesen Code ausgeführt und überprüft? –

Antwort

0

Sie können tun, wie diese

a1 <- c("Hello", "World") 
b1 <- c("[1, 2]", "[1,2,3]") 
c1 <- c("[1, 2, 3, 3]", "[1, 4, 5, 6]") 
d1 <- c("[]", "[1]") 
data <- data.frame(a1, b1, c1, d1, stringsAsFactors = F) 

data <- data.frame(apply(data,2,function(x) gsub(pattern = "\\[", "", x)), stringsAsFactors = F) 
data <- data.frame(apply(data,2,function(x) gsub(pattern = "\\]", "", x)), stringsAsFactors = F) 

data$b1 <- unlist(lapply(strsplit(data$b1, ","), length)) 
data$c1 <- unlist(lapply(strsplit(data$c1, ","), length)) 
data$d1 <- unlist(lapply(strsplit(data$d1, ","), length)) 

data 

    a1 b1 c1 d1 
1 Hello 2 4 0 
2 World 3 4 1 
+0

Danke! Ich habe versucht, das Szenario, das ich mit einem Beispielcode habe, neu zu erstellen, aber vergaß den Fall, in dem die Länge der Liste entweder 0 oder 1 war. Ich habe meinen Beispielcode aktualisiert. –

+0

aktualisiert die Antwort –

+0

Danke! Das hat funktioniert! –

Verwandte Themen