Lappy с функцией while - PullRequest
       11

Lappy с функцией while

0 голосов
/ 18 октября 2018

У меня есть список наборов данных, мне нужно изменить имена переменных.Некоторые символы (то есть ".") Повторяются.Я хочу избавиться от них, аккуратно комбинируя цикл while и удачно созданную функцию.

И функция, которую я написал, и последняя строка кода не работают.Любая помощь приветствуется!

Минимальный рабочий пример:

x <- data.frame("WRONG...." = "", "NOT.SO.WRONG." = "", "NOT.WRONG" = "")
myfiles <- list(x)


nopoints <- function(x){
  while (any(grepl('\\.\\.', names(x)))){
    setNames(x, sub('\\.\\.', '\\.', names(x)))}
  return(x)}

myfiles2 <- lapply(myfiles, nopoints)

myfile2 <- lapply(myfiles2, function(x) setNames(x, sub('\\.$', '', names(x))))

Желаемый результат:

myfiles2 <- data.frame("WRONG" = "", "NOT.SO.WRONG" = "", "NOT.WRONG" = "")

1 Ответ

0 голосов
/ 18 октября 2018

Хорошо.В функции отсутствовал ключевой элемент

nopoints <- function(x)
  {
  while (any(grepl('\\.\\.', names(x))))
    {
    x <- setNames(x, sub('\\.\\.', '\\.', names(x)))
  }
  return(x)
}

Второй вызов lapply действительно работает и на примере, в моем реальном списке его не было из-за порядка выполнения.

...