2017-10-07 1 views
0

die verschachtelte if-Anweisung in diesem Code funktioniert sehr feinewarum verschachtelte If-Anweisung gibt Datenrahmen r nicht zurück?

x <- 4 
if(x == 4){ 
    t <- x + 1 
    if(t == 5){ 
    t + 2 
} 
} 
[1] 7 

, aber wenn ich den gleichen Code auf Datenrahmen versuchen gibt es keine Ergebnisse.

mydata_one <- data.frame(words = c("hello", "everyone")) 
mydata_two <- data.frame(words = c("my", "name")) 
if(length(mydata_one$word) == 2){ 
    big_data <- rbind(mydata_one, mydata_two) 
    if(length(big_data) > 3){ 
    big_data[1:3, 1] 
    } 
} 

Der erwartete Wert ich suche:

[1] hello everyone my 
+0

ein Datenrahmen ist nur eine spezielle Liste. Du hast die Anzahl der Spalten also nicht geändert (ohne brauchbare Leerzeichen) 'if (length (big_data)> 3) {' ist immer noch '1'. – hrbrmstr

Antwort

1

Länge wird nicht mit Datenrahmen arbeiten. Verwenden Sie stattdessen nrow, um die Anzahl der Datensätze zu erhalten.

mydata_one <- data.frame(words = c("hello", "everyone")) 
mydata_two <- data.frame(words = c("my", "name")) 
if(length(mydata_one$word) == 2){ 
    big_data <- rbind(mydata_one, mydata_two) 
    if(nrow(big_data) > 3){ 
    big_data[1:3, 1] 
    } 
} 

Ausgang: [1] Hallo an alle meine
Etagen: jeder hallo mein name

Verwandte Themen