防止重命名从另一个向量分配的向量元素

时间:2016-04-21 18:09:41

标签: r

我有一个字符向量(在这种情况下,是十六进制颜色)。

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

为什么要重命名? (如果它不是一个错误,那么非常感谢有关此行为的文档链接。)什么是阻止它发生的最简单方法?

1 个答案:

答案 0 :(得分:2)

  • 这是因为编写c()函数的人就是这样设计的。就个人而言,我认为没有任何强有力的理由;我希望在封闭的struct node **lastNode = first; while (*lastNode != NULL) { struct node *currentNode = *lastNode; if (currentNode->age != age) { lastNode = &currentNode->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"