r语言 - 从函数参数动态命名列表元素



我正在尝试从给定参数动态命名函数内的列表元素:

这适用于静态名称(非函数):

list(comp1 =
c("setosa" = 1,
"versicolor" = 0,
"virginica" = -1))
$comp1
group1 group2 group3 
1      0     -1 

但是当我想从组名(例如,mtcars数据集的cyl)中输入字符串("group1"等)时,通常来自函数:

list(comp1 =
c(levels(iris$Species)[1] = 1,
levels(iris$Species)[2] = 0,
levels(iris$Species)[3] = -1))

我得到这个错误:

Error: unexpected '=' in:
"list(comp1 =
c(levels(iris$Species)[1] ="
Error: unexpected ',' in "           levels(iris$Species)[2] = 0,"
Error: unexpected ')' in "           levels(iris$Species)[3] = -1)"

但是输出应该是相同的:

> levels(iris$Species)[1]
[1] "setosa"
> levels(iris$Species)[2]
[1] "versicolor"
> levels(iris$Species)[3]
[1] "virginica"

问题:有没有办法从给定的函数参数中命名这些列表元素(例如,组名)?

您可以使用setNames来分配名称。

list(comp1 = setNames(c(1, 0, -1), levels(iris$Species)))
#$comp1
#    setosa versicolor  virginica 
#         1          0         -1 

最新更新