R-如何通过调用字符值来命名值



我希望在向量名称中给出值。我知道该怎么做,但是在这种情况下,我有很多名称和许多值,都在列表中的向量中,并且通过自杀而手动打字。

此方法:

> values <- c('jessica' = 1, 'jones' = 2)
> values
jessica   jones 
      1       2 

显然有效。但是,此方法:

> names <- c('jessica', 'jones')
> values <- c(names[1] = 1, names[2] = 2)
Error: unexpected '=' in "values <- c(names[1] ="

好吧...我不明白为什么R拒绝将其读成纯字符以将其分配为名称。

我意识到我可以分别创建valuesnames,然后将names分配为names(values),但同样,我的实际情况要复杂得多。但实际上我想知道为什么会出现这个特定问题。

编辑I:我拥有的实际数据是向量列表,每个列表都是不同量的成分组合,然后是成分名称的巨型矢量。我不能仅将名称向量设置为名称,因为需要手动放置单个名称。

编辑II:我的数据结构的示例。

ingredients <- c('ing1', 'ing2', 'ing3', 'ing4') # this vector is much longer in reality
amounts <- list(c('ing1' = 1, 'ing2' = 2, 'ing4' = 3),
                c('ing2' = 2, 'ing3' = 3),
                c('ing1' = 12, 'ing2' = 4, 'ing3' = 3),
                c('ing1' = 1, 'ing2' = 1, 'ing3' = 2, 'ing4' = 5))
            # this list too is much longer

我可以按照显示单独键入每个数字值的名称,但是还有更多的名称,因此我尝试输入:

之类的。
c(ingredients[1] = 1, ingredients[2] = 2, ingredients[4] = 3)

但这引发了一个错误:

Error: unexpected '=' in "amounts <- list(c(ingredients[1] ="

我们可以使用 setNames

setNames(1:2, names)

另一个选项是deframe,如果我们有两个列数据集

library(tibble)
tibble(names, val = 1:2) %>% 
     deframe

最新更新