2014-10-08 1 views
1

У меня есть список 120777 записей, содержащих имена людей. Я хочу сохранить массив частей имени для каждой записи в наборе данных. Я попробовал это в R.Хранение массива слов из строки в списке полных имен в R

my_list$name_parts<- strsplit(my_list$name, " ") 

Я получаю my_list$name_parts как список 120777 пунктов. Когда я пытаюсь запросить количество слов в каждом имени, используя length(my_list$name_parts), я получаю 120777 для всех.

+1

'my_list $ name_parts' - это« список », а длина списка - это количество содержащихся в нем элементов. Вы хотите длину каждого элемента, и вы можете получить его через 'sapply (my_list $ name_parts, length)' – nicola

+0

Другой вариант - использование библиотеки plyr и запуск llply (my_list $ name_parts, length). Или ldply(), если вы хотите, чтобы результат находился в фрейме данных. – Wave

ответ

1

Давайте использовать этот простой пример:

my_list <- list() 
my_list$name <- c("toto t. tutu", "foo bar") 

Чтобы получить количество слов, вы можете сделать это:

lapply(strsplit(my_list$name," "), length) 

, который дает в простом примере выше:

[[1]] 
[1] 3 

[[2]] 
[1] 2 

Чтобы избежать получения списка, вы можете даже сделать:

unlist(lapply(strsplit(my_list$name," "), length)) 
[1] 3 2 
+0

Не должно ли «a» быть «my_list $ name»? – KFB

+0

Да, конечно! Я его отредактировал – Pop

+0

Это решение работает! Но также скажите, пожалуйста, если бы я хранил массивы word_parts (а не длину массива) в качестве переменной в моем наборе данных my_list, как бы я это сделал? – user3422637

Смежные вопросы