我有一个字符向量(在这种情况下,是十六进制颜色)。
choices
从这个向量中,我希望选择一些元素传递给另一个向量(在这种情况下,用作selectInput
的{{1}}参数)。
somePalette <- structure( c( "#F6B436", "#4D86A0","#672767"),
.Names = c("Yellow", "Blue", "Purple")
)
pie(c(1,1,1),col=somePalette)
我尝试分配的元素名称似乎已经更改,具体取决于我传递的元素的索引:
values=
以下解决方法可生成所需的输出:
ggplot2::scale_color_manual
为什么要重命名? (如果它不是一个错误,那么非常感谢有关此行为的文档链接。)什么是阻止它发生的最简单方法?
答案 0 :(得分:2)
这是因为编写c()
函数的人就是这样设计的。就个人而言,我认为没有任何强有力的理由;我希望在封闭的struct node **lastNode = first;
while (*lastNode != NULL) {
struct node *currentNode = *lastNode;
if (currentNode->age != age) {
lastNode = ¤tNode->next;
continue;
}
/* remove currentNode */
*lastNode = currentNode->next;
free(currentNode);
}
调用中指定显式名称时剥离操作数向量的名称。
我找不到有关此行为的任何文档。
我可以想到以下方法来阻止它发生:
1: unname()
。
c()
2: [[
索引。
c(setosa=unname(somePalette['Yellow']),versicolor=unname(somePalette['Blue']),virginica=unname(somePalette['Purple']));
## setosa versicolor virginica
## "#F6B436" "#4D86A0" "#672767"
通常的索引形式是[。 [[可用于选择丢弃名称的单个元素,而[保留它们,例如,在c(abc = 123)[1]中。
3: setNames()
之后。
c(setosa=somePalette[['Yellow']],versicolor=somePalette[['Blue']],virginica=somePalette[['Purple']]);
## setosa versicolor virginica
## "#F6B436" "#4D86A0" "#672767"