2013-03-15 9 views
17

Dies funktioniertNichtzeichenargument in R-String Split-Funktion (strsplit)

x <- "0.466:1.187:2.216:1.196" 
y <- as.numeric(unlist(strsplit(x, ":"))) 

Werte von blat$LRwAvg alle aussehen wie X oben, aber das nicht funktioniert,

for (i in 1:50){ 
    y <- as.numeric(unlist(strsplit(blat$LRwAvg[i], "\\:"))) 
    blat$meanLRwAvg[i]=mean(y) 
} 

Wegen:

Fehler in Strsplit (Blat $ LRwAvg [i], "\:"): Nicht-Zeichen-Argument

Es spielt keine Rolle, ob ich ein, zwei oder null Backslashes habe.

Was ist mein Problem? (Nicht im Allgemeinen, ich meine, in dieser speziellen Aufgabe, technisch)

+0

Was die Ausgabe von 'Klasse (Blat $ LRwAvg)', und können Sie uns geben, einige Daten von 'blat $ LRwAvg' – alexwhan

+3

@AWE Es ist ein Fehlertyp. Zwinge das Argument zum Charakter, 'as.character (blat $ LRwAvg)' – agstudy

+1

@alexwhan Ich bemerkte, dass so mein Kommentar gelöscht wurde, aber nicht schnell genug: $. Es sieht so aus als wäre es ein Problem mit Faktoren. Also zwinge den Charakter, wie @agstudy es vorschlägt, oder benutze 'stringsAsFactors = FALSE', wenn du den data.frame erstellst. – James

Antwort

17

Wie agstudy implizierten blat$LRwAvg <- as.character(blat$LRwAvg) vor Schleife es behebt

blat$meanLRwAvg <- blat$gtFrqAvg #or some other variable in data frame with equal length 
blat$LRwAvg <- as.character(blat$LRwAvg) 
for (i in 1:50){ 
    y <- as.numeric(unlist(strsplit(blat$LRwAvg[i], "\\:"))) 
    blat$meanLRwAvg[i]=mean(y) 
}