2013-03-15 13 views
17

Działadla argumentu w postaci R ciąg podzielonego funkcji (strsplit)

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

Wartości blat$LRwAvg wszystkich wyglądać X powyżej, ale to nie działa

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

powodu:

Błąd w strsplit (blat $ LRwAvg [i], "\:"): argument nie będący znakiem

Nie ma znaczenia, czy mam jeden, dwa lub zerowe ukośniki odwrotne.

Na czym polega mój problem? (Nie ogólnie, to znaczy w tym szczególnym zadaniu technicznie)

+0

Jakie jest wyjście 'klasy (blat $ LRwAvg)', a możesz dać nam niektóre dane z 'blat $ LRwAvg' – alexwhan

+3

@AWE Jest to typ błędu. przymus argument do znaku, 'as.character (blat $ LRwAvg)' – agstudy

+1

@alexwhan Zauważyłem, że tak skasowałem mój komentarz, ale nie dość szybko: $. Wygląda na to, że jest to problem z czynnikami. Więc zmuszajmy się do znaku, jak @agstudy sugeruje, lub używaj 'stingsAsFactors = FALSE' podczas tworzenia danych.frame. – James

Odpowiedz

17

Jak agstudy domniemanych blat$LRwAvg <- as.character(blat$LRwAvg) przed pętla naprawił

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) 
} 
Powiązane problemy