我想从 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 指引我正确的方向
我有一个由多个变量组成的数据框,其中一些是 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 指引我正确的方向