Для зацикливания списка элементов для использования в gsub R - PullRequest
2 голосов
/ 09 июля 2019

В R я хочу зациклить элементы для замены в столбце.

вход в функцию представляет собой список элементов, и я хочу вернуть список после удаления всех элементов в списке itemsToBeRemoved.

removePunctuation <- function(punctuationObject){
    itemsToBeRemoved <- list(".", ",", ";", ":", "'", "!", "#", "-", "--")
    objectApplyTo <- punctuationObject
    for (itemToReplace in itemsToBeRemoved){
        resultObject <- gsub("itemToReplace", "", objectApplyTo, fixed=TRUE)
        return(resultObject)   
    }
}

Я ожидаю все случаи ".", ",", ";", ":", "'", "!", "#", "-", "-"подлежит удалению из списка символьных элементов.

Ответы [ 2 ]

1 голос
/ 09 июля 2019

У вас есть несколько проблем, одна из которых заключается в том, что если вы хотите, чтобы он работал в списке, вы постоянно переопределяете его значения. Также шаблон "." это проблематично для вас. Потому что это воспринимается как "." подстановочный знак, а не просто точка. Проверьте это:

removePunctuation <- function(punctuationObject){
  itemsToBeRemoved <- list("\\.", ",", ";", ":", "'", "!", "#", "-", "--")
  for (item in itemsToBeRemoved){
    punctuationObject <- gsub(item, "", punctuationObject)
    print(punctuationObject)

  }
  return(punctuationObject)  
}

punctuationObject <- list("a,", "b", "c#")


removePunctuation(punctuationObject)
1 голос
/ 09 июля 2019

Базовое решение R может быть

removePunctuation <- function(punctuationObject){
  itemsToBeRemoved <- c(".", ",", ";", ":", "'", "!", "#", "-", "--")
  resultObject <- punctuationObject
  for (itemToReplace in itemsToBeRemoved){
    resultObject <- gsub(itemToReplace, "", resultObject, fixed = TRUE)
  }
  resultObject
}

x <- c("This, that; end.", "Second: single quote' etc !")

removePunctuation(x)
#[1] "This that end"            "Second single quote etc "
...