R: как преобразовать список в вектор dataframe после sapply? - PullRequest
0 голосов
/ 02 марта 2019

Я сделал функцию с именем my_title(), которая пытается сопоставить каждое имя в title$Name, чтобы найти совпадение, где он вернет заголовок с этим именем, если он является одним из рассмотренных заголовков, или "Другой", если онне.

name_exp <- c("Miss.", "Mrs.", "Mr.", "Master.", "Dr.", "Rev.")
my_title <- function(x){
  i <- 1
  for(i in 1:length(name_exp)){
    full_name <- paste(name_exp[i])
    name_check <- grepl(x, pattern=full_name)
    if(name_check=="TRUE"){
      nmatches <- gregexpr(pattern=full_name, text=x[name_check])
      finalnames <- regmatches(x[[name_check]], nmatches)
      return(finalnames)
    }
    else{
      if(i==6 & name_check=="FALSE"){
      return("Other")
      }
      else{
        i <- i+1
      }
  }
  }
}

Однако следующим шагом является создание нового столбца в кадре данных titanic$Title, где каждый соответствует соответствующему выводу функции.Я использовал sapply(), но возвращаемое значение представляет собой список, а не вектор символов.В идеале titanic$Title[1] вернул бы заголовок "Мистер"а не <chr [1]>.

Я пытался использовать unlist(), но получаю ошибки.Не уверен, что делать дальше, спасибо!

titanic$Title <- sapply(titanic$Name, my_title)
titanic[sample(1:nrow(titanic),10),c("Title","Name")]

, поэтому, когда я проверяю это, используя вторую строку выше, я получаю это:

Title
<list>
Name
<chr>
792 <chr [1]>   Gaskell, Mr. Alfred     
570 <chr [1]>   Jonsson, Mr. Carl       
873 <chr [1]>   Carlsson, Mr. Frans Olof        
674 <chr [1]>   Wilhelms, Mr. Charles       
224 <chr [1]>   Nenkoff, Mr. Christo        
673 <chr [1]>   Mitchell, Mr. Henry Michael     
198 <chr [1]>   Olsen, Mr. Karl Siegwart Andreas        
119 <chr [1]>   Baxter, Mr. Quigg Edmond        
866 <chr [1]>   Bystrom, Mrs. (Karolina)        
242 <chr [1]>   Murphy, Miss. Katherine "Kate"

Запуск head(titanic$Title):

$`Braund, Mr. Owen Harris`
[1] "Mr."

$`Cumings, Mrs. John Bradley (Florence Briggs Thayer)`
[1] "Mrs."

$`Heikkinen, Miss. Laina`
[1] "Miss."
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...