Я сталкиваюсь с некоторыми проблемами при обработке текста с использованием функций dplyr и stringr (в частности, str_split ()).Я думаю, что неправильно понимаю нечто очень фундаментальное о том, как правильно использовать dplyr при работе с элементами, которые являются векторами / списками.
Вот тиббл, df ...
library(tidyverse)
df <- tribble(
~item, ~phrase,
"one", "romeo and juliet",
"two", "laurel and hardy",
"three", "apples and oranges and pears and peaches"
)
Теперь я создаю новый столбец splitPhrase , выполнив str_split () для одного из столбцов, используя " и " в качестве разделителя.
df <- df %>%
mutate(splitPhrase = str_split(phrase,"and"))
Это похоже на работу, вроде как, в RStudio я вижу это ...
В консоли я вижучто мой новый столбец, splitPhrase, фактически состоит из списка ... но на дисплее Rstudio он выглядит правильно, верно?
df
#> # A tibble: 3 x 3
#> item phrase splitPhrase
#> <chr> <chr> <list>
#> 1 one romeo and juliet <chr [2]>
#> 2 two laurel and hardy <chr [2]>
#> 3 three apples and oranges and pears and peaches <chr [4]>
Что я в конечном итоге хочу сделать , так это извлечь последний элемент каждой фразы splitPhrase .Другими словами, я хотел бы добраться до этого ...
Проблема в том, что я не вижу, как просто взять последнийэлемент в каждой splitPhrase.Если бы это был просто вектор, я мог бы сделать что-то вроде этого ...
#> last( c("a","b","c") )
#[1] "c"
#>
Но это не сработает в Тибле, как и другие вещи, которые приходят на ум:
df <- df %>%
mutate(lastThing = last(splitPhrase))
# Error in mutate_impl(.data, dots) :
# Column `lastThing` must be length 3 (the number of rows) or one, not 4
df <- df %>% group_by(splitPhrase) %>%
mutate(lastThing = last(splitPhrase))
# Error in grouped_df_impl(data, unname(vars), drop) :
# Column `splitPhrase` can't be used as a grouping variable because it's a list
Итак, я думаю, что "не понимаю", как работать с векторами, которые находятся внутри элемента в столбце таблицы / таблицы.Кажется, это как-то связано с тем, что в моем примере это на самом деле список векторов.
Есть ли какая-то особая функция, которая мне здесь поможет, или лучший способ добраться до этого?
Создан в 2018-09-27 пакетом представ. (v0.2.1)