У меня есть функция, предложенная пользователем в ответ на мой предыдущий вопрос:
word_string <- function(x) {
inds <- seq_len(nchar(x))
start = inds[-length(inds)]
stop = inds[-1]
substring(x, start, stop)
}
Функция работает так, как ожидалось, и разбивает данное слово на составные части в соответствии с моими разделениями:
word_string('microwave')
[1] "mi" "ic" "cr" "ro" "ow" "wa" "av" "ve"
Теперь я хочу иметь функцию, применяемую ко всем строкам указанного столбца в фрейме данных.
Вот фрейм данных для иллюстрации:
word <- c("House", "Motorcar", "Boat", "Dog", "Tree", "Drink")
some_value <- c("2","100","16","999", "65","1000000")
my_df <- data.frame(word, some_value, stringsAsFactors = FALSE )
my_df
word some_value
1 House 2
2 Motorcar 100
3 Boat 16
4 Dog 999
5 Tree 65
6 Drink 1000000
Теперь, если я использую lapply для работы функции на моем фрейме данных, я получаю не только неверные результаты, но и сообщение об ошибке.
lapply(my_df['word'], word_string)
$word
[1] "Ho" "ot" "at" "" "Tr" "ri"
Warning message:
In seq_len(nchar(x)) : first element used of 'length.out' argument
Таким образом, вы можете видеть, что функция применяется , но он применяется так, что он оценивает каждую строку частично. Желаемый результат будет выглядеть примерно так:
[1] "ho" "ou" "us" "se
[2] "mo" "ot" "to" "or" "rc" "ca" "ar"
[3] "bo" "oa" "at"
[4] "do" "og"
[5] "tr" "re" "ee"
[6] "dr" "ri" "in" "nk"
Любое руководство с благодарностью.