从函数参数动态命名列表元素
Dynamically name list elements from function argument
我正在尝试根据给定参数动态命名函数内的列表元素:
这适用于静态名称(非函数):
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
我正在尝试根据给定参数动态命名函数内的列表元素:
这适用于静态名称(非函数):
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