У меня есть список R ок.90 символьных векторов (представляющих 90 документов), каждый из которых содержит несколько имен авторов.В качестве средства обрезки (или нормализации, что у вас) имен я хотел бы удалить все символы после пробела и первый символ после запятой в каждом элементе.Так, например, «Смит, Джо» станет «Смит, Дж» (или «Смит Дж» будет в порядке).
1) Я пытался использовать lapply с str_sub, но я не могу указать, чтобы один символ оставался после запятой (каждый элемент имеет разную длину символа).2) Я также попытался использовать lapply, чтобы разделить запятую и разделить фамилию и фамилию на отдельные элементы, затем с помощью modify_depth для применения str_sub, но я не могу понять, как конкретно использовать str_sub только для второго элемента.
Поддельный образец для репликации проблемы.
doc1 = c("King, Stephen", "Martin, George")
doc2 = c("Clancy, Tom", "Patterson, James", "Stine, R.L.")
author = list(doc1,doc2)
Что я пробовал:
myfun1 = function(x,arg1){str_split(x, ", ")}
author = lapply(author, myfun1)
myfun2 = function(x,arg1){str_sub(x, end = 1L)}
f2 = modify_depth(author, myfun2, .depth = 2)
f2
[[1]]
[[1]][[1]]
[1] "K" "S"
[[1]][[2]]
[1] "M" "G"
В конечном счете, я надеюсь после применения решения, включая, возможно, использованиеunite (), результат будет следующим:
[[1]]
[[1]][[1]]
[1] "King S"
[[1]][[2]]
[1] "Martin G"