2016-07-13 13 views
0

Ich befolge die Anweisungen hier Dummy variables from a string variable zu versuchen, eine Spalte von Zeichenfolgen (durch Leerzeichen getrennte Wörter) in Dummy-Variablen (0-1, um ein Wort zu sein, zu konvertieren) mit NOTUSED in dieser Zeile in der Zeichenfolge verwendet /) concat.split.expanded aber ein paar der folgenden Fehler:splitstapshape pkg - concat.split.expanded Rückgabe NA durch Zwang Fehler

In lapply(listOfValues, as.integer) : NAs introduced by coercion 

voraus von einem

Error in seq.default(min(vec), max(vec)) : 'from' cannot be NA, NaN or infinite 

bin ich ziemlich sicher, dass es aren Es werden keine NA in der Spalte konvertiert, geschweige denn so viele. Ich bin mir nicht sicher, wie ich das beheben soll. Vielen Dank!

Befehl ich gelaufen bin produziert das Problem:

concat.split.expanded(dataset, "stringvarname", sep = " ", mode = "binary", drop = false) 

Erzeugt das Problem mit oder ohne Füllung =

Antwort

1

Sie müssen angeben, dass Sie verketteten Strings spalten („var2“ in der Beispieldaten unten) und nicht numerische Werte, die als Strings verkettet sind ("var3" in den folgenden Beispieldaten).

Hier ist ein Beispiel, das Ihr Fehler reproduziert und zeigt die Arbeitslösung:

df = data.frame(var1 = 1:2, var2 = c("a b c", "a c d"), var3 = c("1 2 3", "1 2 5")) 
library(splitstackshape) 

cSplit_e(df, "var3", sep = " ") 
# var1 var2 var3 var3_1 var3_2 var3_3 var3_4 var3_5 
# 1 1 a b c 1 2 3  1  1  1  NA  NA 
# 2 2 a c d 1 2 5  1  1  NA  NA  1 

## Will give you an error 
cSplit_e(df, "var2", sep = " ") 
# Error in seq.default(min(vec), max(vec)) : 
# 'from' cannot be NA, NaN or infinite In addition: Warning messages: 
# 1: In lapply(listOfValues, as.integer) : NAs introduced by coercion 
# 2: In lapply(listOfValues, as.integer) : NAs introduced by coercion 

cSplit_e(df, "var2", sep = " ", type = "character") 
# var1 var2 var3 var2_a var2_b var2_c var2_d 
# 1 1 a b c 1 2 3  1  1  1  NA 
# 2 2 a c d 1 2 5  1  NA  1  1 

Warum? cSplit_e verwendet seq und seq ist für numerische Eingabe.

> seq("a", "c") 
Error in seq.default("a", "c") : 'from' cannot be NA, NaN or infinite