【发布时间】:2022-01-02 18:20:53
【问题描述】:
我想将 N 个向量组合成一个数据框,其中包含一列,其中的值是原始向量的名称。例如,假设我有这三个向量:
fruits <- c('apple', 'pear', 'banana', 'raspberry')
vehicles <- c('cars', 'bikes', 'buses', 'trains')
weather <- c('sunny', 'windy', 'rainy', 'cloudy', 'cold', 'hot')
通过使用 tidyverse 中的 enframe,我可以达到我想要的一半。例如
enframe(c(fruits, vehicles, weather), name = "name", value = "value")
# A tibble: 14 × 2
name value
<int> <chr>
1 1 apple
2 2 pear
3 3 banana
4 4 raspberry
5 5 cars
6 6 bikes
7 7 buses
8 8 trains
9 9 sunny
10 10 windy
11 11 rainy
12 12 cloudy
13 13 cold
14 14 hot
但我现在想要的是一个新列,其中包含元素来自的三个向量的名称。例如
# A tibble: 14 × 2
name value
<chr> <chr>
fruits apple
fruits pear
fruits banana
fruits raspberry
vehicles cars
vehicles bikes
vehicles buses
vehicles trains
weather sunny
weather windy
weather rainy
weather cloudy
weather cold
weather hot
有谁知道我如何做到这一点?
【问题讨论】:
-
这似乎是一个XY问题;确保您可以从您的环境中获取变量的名称,将它们存储在
list中,然后以能够重现您预期输出的方式绑定向量及其名称。但是,fruits、vehicles和weather首先是如何生成的?与其拥有三个单独的向量(这很尴尬),不如将它们放在一个名为list的开头。这就是我要开始的地方......