При создании функций, которые используют strsplit
, векторные входы ведут себя не так, как нужно, и sapply
необходимо использовать. Это связано с выходом списка, который производит strsplit
. Есть ли способ векторизации процесса, т.е. Функция создает правильный элемент в списке для каждого из элементов ввода?
Например, чтобы подсчитать длины слов в символьном векторе:
words <- c("a","quick","brown","fox")
> length(strsplit(words,""))
[1] 4 # The number of words (length of the list)
> length(strsplit(words,"")[[1]])
[1] 1 # The length of the first word only
> sapply(words,function (x) length(strsplit(x,"")[[1]]))
a quick brown fox
1 5 5 3
# Success, but potentially very slow
В идеале, что-то вроде length(strsplit(words,"")[[.]])
, где .
интерпретируется как принадлежность к соответствующей части входного вектора.