2016-06-22 20 views
5

Szukam funkcji, która wykonuje operację usuwania na łańcuchu na podstawie pozycji.Dostępne funkcje do usuwania znaków z niektórych pozycji ciągu znaków

Na przykład, biorąc pod uwagę ciąg jest jak ten

string1 <- "hello stackoverflow" 

Przypuśćmy, że chcę usunąć 4., 10. i 18. pozycji.

Preferred Wyjście

"helo stakoverflw" 

nie jestem pewien co do istnienia takiej funkcji.

+0

Witam wszystkich. Bardzo interesuje mnie poprzednia funkcja. Mogę też napisać jedną linijkę. Może ** Szukam jednego liniowca. ** wprowadził zamieszanie. Przepraszam za to. – user2100721

+0

Zamiast istniejącej wcześniej funkcji, czy mógłbyś napisać własną funkcję, która robi to, co chcesz? –

+1

Niestety, nie istnieje wcześniejsza funkcja. R nie przechowuje łańcuchów jako wektorów elementów jednokolumnowych, takich jak python. – Frank

Odpowiedz

3

To zadziałało dla mnie.

string1 <- "hello stackoverflow" 
paste((strsplit(string1, "")[[1]])[-c(4,10,18)],collapse="") 
[1] "helo stakoverflw" 

użyłem strsplit podzielić ciąg do wektora znaków, a następnie wklejać tylko żądane znaki wraz z powrotem do łańcucha.

Można również napisać funkcję, która wykonuje to:

delChar <- function(x,eliminate){ 
    paste((strsplit(x,"")[[1]])[-eliminate],collapse = "") 
} 

delChar(string1,c(4,10,18)) 
[1] "helo stakoverflw" 
+2

Przy takim podejściu wygodniejsze może być użycie:' paste ((strsplit (string1, "") [[1]]) [ -c (4,10,18)], sep = "", collapse = "") ', więc określasz znaki, które chcesz usunąć, a nie te, które chcesz zachować. –

+1

Haha dosłownie zmienił to prawo, kiedy twój komentarz został opublikowany. Dobry punkt z '-c()' zamiast 'c (-3)'. –

+3

'wklej ((strsplit (string1," ") [[1]]) [c (-4, -10, -18)], collapse =" ")' powinno być wystarczająco dobre, nie musisz określać zarówno 'sep' jak i' collapse'. – Psidom

Powiązane problemy