gpt4 book ai didi

r - 在带有矢量元素的小标题上使用 dplyr 的问题 [列表列]

转载 作者:行者123 更新时间:2023-12-04 10:34:55 25 4
gpt4 key购买 nike

我在使用 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 中,我看到了这个......

enter image description here

在控制台中,我看到我的新列 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 的项目。换句话说,我想达到这个......

enter image description here

问题是我看不到如何只获取每个 splitPhrase 中的最后一个元素。如果它只是一个向量,我可以做这样的事情......

#> last( c("a","b","c") )
#[1] "c"
#>

但这在 tibble 中不起作用,想到的其他事情也不起作用:

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

所以,我认为我“不明白”如何处理表/tibble 列中元素内的向量。这似乎与以下事实有关,即在我的示例中,它实际上是一个向量列表。

是否有特定的功能可以帮助我解决这个问题,或者有更好的方法来解决这个问题?

创建于 2018-09-27 由 reprex package (v0.2.1)

最佳答案

'splitPhrase' 列是 list ,所以我们循环遍历 list获取元素

library(tidyverse)
df %>%
mutate(splitPhrase = str_split(phrase,"\\s*and\\s*"),
Last = map_chr(splitPhrase, last)) %>%
select(item, Last)

但是,它可以通过多种方式完成。使用 separate_rows ,展开列,得到 last按“项目”分组的元素
df %>% 
separate_rows(phrase,sep = " and ") %>%
group_by(item) %>%
summarise(Last = last(phrase))

关于r - 在带有矢量元素的小标题上使用 dplyr 的问题 [列表列],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52543847/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com