- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
一位社区成员帮助我编写了以下代码:
library(rvest)
library(tidyverse)
get_articles <- function(n_articles) {
page <- paste0("https://www.theroot.com/news/criminal-justice",
"?startIndex=",
n_articles) %>%
read_html()
tibble(
title = page %>%
html_elements(".aoiLP .js_link") %>%
html_text2(),
author = page %>%
html_elements(".llHfhX .js_link , .permalink-bylineprop") %>%
html_text2(),
date = page %>%
html_elements(".js_meta-time") %>%
html_text2(),
url = page %>%
html_elements(".aoiLP .js_link") %>%
html_attr("href")
)
}
df <- map_dfr(seq(0, 200, by = 20), get_articles)
但是当我尝试运行它时,我收到以下错误:
! Tibble columns must have compatible sizes.• Size 20: Existing data.• Size 21: Column
author
.ℹ Only values of size one are recycled.
我已经在此处搜索了解决方案,但未能从中获得太多意义。如果有任何帮助,我将不胜感激。
最佳答案
由于代码中的 author
返回 url 中所有作者的列表,并且某些文章有多个作者,因此该函数返回的作者多于文章。 dataframe
或 tibble
的每一列中的元素数量必须相同。
例如,这会引发类似的错误
tibble::tibble(url = 1:3, author = 1:4)
#> Error: Tibble columns must have compatible sizes.
#> * Size 3: Existing data.
#> * Size 4: Column `author`.
#> i Only values of size one are recycled.
一种选择是在阅读每篇文章的内容时将作者姓名的检索推到下一步。请注意第 10 个 url 链接到没有文章正文的视频,因此它不返回任何 content
。
library(rvest)
library(tidyverse)
get_articles <- function(n_articles) {
page <- paste0("https://www.theroot.com/news/criminal-justice",
"?startIndex=",
n_articles) %>%
read_html()
tibble(
title = page %>%
html_elements(".aoiLP .js_link") %>%
html_text2(),
date = page %>%
html_elements(".js_meta-time") %>%
html_text2(),
url = page %>%
html_elements(".aoiLP .js_link") %>%
html_attr("href")
)
}
#df <- map_dfr(seq(0, 200, by = 20), get_articles)
df <- map_dfr(0, get_articles) #small example
df %>%
slice(1:10) %>% # subset 10 rows for example
mutate(html = map(url, read_html),
content = map(html, ~ .x %>%
html_elements(".bOfvBY") %>%
html_text2 %>%
paste(collapse = ",")),
author = map(html, ~ .x %>%
html_elements(".llHfhX .js_link , .permalink-bylineprop") %>%
html_text2() %>%
set_names(paste0('author', 1:length(.))) #name the elements, which will become column names
)
) %>%
unnest(content) %>%
unnest_wider(author)
#> # A tibble: 10 x 7
#> title date url html content author1 author2
#> <chr> <chr> <chr> <lis> <chr> <chr> <chr>
#> 1 "US Soldier S~ Today ~ https://www.t~ <xml~ "A US soldier ~ Kalyn W~ <NA>
#> 2 "South Caroli~ Yester~ https://www.t~ <xml~ "On Tuesday, a~ Jessica~ <NA>
#> 3 "Abortion is ~ Tuesda~ https://www.t~ <xml~ "Abortion is o~ Jessica~ <NA>
#> 4 "Pennsylvania~ 9/02/2~ https://www.t~ <xml~ "Pennsylvania ~ Kalyn W~ <NA>
#> 5 "UN Committee~ 9/02/2~ https://www.t~ <xml~ "The devolving~ Jessica~ <NA>
#> 6 "DA Fani Will~ 8/30/2~ https://www.t~ <xml~ "There continu~ Murjani~ <NA>
#> 7 "How to Prote~ 8/30/2~ https://www.t~ <xml~ "The decision ~ Jessica~ <NA>
#> 8 "26 Alleged G~ 8/29/2~ https://www.t~ <xml~ "Twenty-six pe~ Keith R~ <NA>
#> 9 "Judge Angere~ 8/29/2~ https://www.t~ <xml~ "Sullivan Walt~ Kalyn W~ <NA>
#> 10 "Small Town H~ 8/27/2~ https://www.t~ <xml~ "" Kalyn W~ Adriano~
由 reprex package 创建于 2022-09-08 (v2.0.0)
关于r - 如何摆脱错误 : Tibble columns must have compatible sizes?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73628499/
这个问题在这里已经有了答案: Combine a list of data frames into one data frame by row (9 个回答) 去年关闭。 我有一个很大的列表(200.
我想创建一个存储其他任意小标题的小标题列。 我通过以下代码设法做到了这一点,首先使用 nest()在每个内部 tibble 上然后使用 unnest()在外层 library(tibble) libr
我已尽我所能进行搜索,但仍在为我的问题而苦苦挣扎。我正在尝试根据另一个 tibble 的值对 tibble 中的列进行子集化。 更具体地说,我有一些社会经济指标: cname year ccod
我已尽我所能进行搜索,但仍在为我的问题而苦苦挣扎。我正在尝试根据另一个 tibble 的值对 tibble 中的列进行子集化。 更具体地说,我有一些社会经济指标: cname year ccod
我有两个问题,第一个是这个。 input_data # A tibble: 7 × 3 #> Genes Sample1 Sample2 #> #> 1 Ncr1
我有两个 tibbles,ranges 和 sites。第一个包含一组坐标(区域、开始、结束以及其他字符变量),另一个包含一个站点(区域、站点)。我需要获取第二个小标题中第一个小标题中给定范围(行)内
我正在使用 rtweet 包的 get_friends 函数来获取一组焦点用户的 friend 的 user_id 列表谁是从 Twitter 话语的参与者中抽样的。该函数返回一个 tibbles 列
我正在使用 rtweet 包的 get_friends 函数来获取一组焦点用户的 friend 的 user_id 列表谁是从 Twitter 话语的参与者中抽样的。该函数返回一个 tibbles 列
我想在以下代码中生成一个 tibble 列表。 tbl = tibble(id=1:10, a = rnorm(10), b = rnorm(10)) tbl_list = c("a", "b")
我有一个数据框,我需要添加一列以包含对应于现有数据框每一行的 3 个物种。希望下面的例子能说明问题: Site Year Trt A 2016 bowl A
我想用 df 中的 NA 替换 de 列,使用 df2 中的估算值来获得 df3 .我可以使用 left_join 和 coalesce 来做到这一点,但我认为这种方法不能很好地概括。有没有更好的办法
我想用 df 中的 NA 替换 de 列,使用 df2 中的估算值来获得 df3 .我可以使用 left_join 和 coalesce 来做到这一点,但我认为这种方法不能很好地概括。有没有更好的办法
假设我有一个嵌套的 tibble,格式如下: # A tibble: 3 x 3 AccountNumber Tibble1 Tibble2
在之前版本的 tidyr 中,我能够使用 tibble::add_row 将行添加到嵌套 tibble。更新到版本 1.0.0 后出现以下错误: Error: levels.vctrs_list_of
我编写了一个函数,其中一部分将矩阵转换为小标题。这在 tibble 1.4.2 中没有问题,但在 2.0.1 中会导致错误。 导致错误的代码如下 library(tibble) library(mag
我有这个列表列表: regions unnest(country) 在 base R 中,命名列表,并使用 stack : setNames(regions, seq_along(regions
我有一个问题: df % filter(! (x %>% map_lgl(~ sum(str_extract(df$x, .x) == .x, na.rm = TRUE) > 1))) #> # A
为了简化我的数据分析,我需要针对不同的变量和不同的数据组处理不同的统计测试(在该示例中为 shapiro 测试)。目的是不要写 150 次相同的代码。为此,我从我的数据集中创建了一个 tibble,其
我正在尝试通过对多个步骤进行采样来模拟一些数据。 第一步(创建 x)工作正常。 在第二步中,我想根据 x 的值从不同的向量中采样来创建变量 y。 我的代码运行没有错误,但在我试图实现的目标上失败了,因
我有一个像这样的嵌套列表: > ex ex [[1]] [[1]][[1]] [1] "This" "is" "an" "example" "." [[1]][[
我是一名优秀的程序员,十分优秀!