我想从 R 中的 tibble 变量中提取一个元素

I want to draw one element out from a tibble variable in R

我有一个由多个变量组成的数据框,其中一些是 tibbles。 我有这样的变量:

[ID, name, symbol, category, urls,....,slug]

在这种情况下,slug 是一个 tibble,由多个感兴趣的 url 组成,例如 [Website, facebooksite, twitter,..,reddit]

我想为每个资产只绘制网页作为新变量。

到目前为止,我发现我可以获取

的网页
ID=1 data$urls[[1]][1,] and for ID=2 crypto.info1$urls[[2]][1,]

output is
A tibble: 1 x 2
  name    url                 
  <chr>   <chr>               
1 website https://bitcoin.org/

但我想要新变量中的每个 ID。我希望有人能帮助我。

Data example:
| ID |  Name   |Category |   Urls    |
| -- | --------|---------|-----------|
| 1  | Bitcoin |Coin     |2 variables|
| 2  | Litecoin|Coin     |3 variables|
| .  | ........|......   |...........|

当 urls 打开时,它看起来像: 数据示例:

|  Name   |              url           |
| --------|----------------------------|
| Website |https://bitcoin.org/        |
| Reddit  |https://reddit.com/r/bitcoin|
| ........|......                      |

由于缺乏上下文,您可以使用 for 循环。由于您只想要网站,因此您可以像我在下面的代码中所做的那样稍微编辑索引。

免责声明:我没有运行这个代码,如果你看到错误请告诉我。

另外:我知道这是一个 for 循环而不是矢量化。

urls <- c()

for(i in 1:length(data$urls)){

urls[i] <- data$urls[[i]][1,2] 
}

如果我没理解错你的问题,用上面的代码urls会提取一个网站的向量。

希望对您有所帮助。

如果您不介意 made-up 示例,这里有另一种方法:

library(tidyverse)

# Made-up data
df <- tribble(~id, ~name, ~url,
        1, "website", "bitcoin.org",
        1, "twitter", "#this",
        2, "website", "bitcoin.net",
        2, "twitter", "#that",
        3, "website", "bitcoin.biz",
        3, "twitter", "#other",
        ) |> 
  nest(slug = -id)

# Pluck the url
df |> mutate(website = map_chr(slug, pluck, "url", 1))
#> # A tibble: 3 × 3
#>      id slug             website    
#>   <dbl> <list>           <chr>      
#> 1     1 <tibble [2 × 2]> bitcoin.org
#> 2     2 <tibble [2 × 2]> bitcoin.net
#> 3     3 <tibble [2 × 2]> bitcoin.biz

reprex package (v2.0.1)

于 2022-05-26 创建
urls <- c()

for(i in 1:length(data$urls)){

urls[i] <- data$urls[[i]][1,2] 
}
data$Website <- urls

感谢 Bensstats 指引我正确的方向