网格单元向量中的元素替换

bap*_*ste 5 r r-grid

我已经被这几次困惑了,所以对于其他可能偶然遇到同样问题的人来说,这是一个问题.

考虑这个网格单位向量,

a = unit(1:3, c("cm", "in", "npc"))
Run Code Online (Sandbox Code Playgroud)

我想用新值替换一些元素.自然的方法是,

a[1] = unit(2,"pt")
a
# [1] 2cm  2in  3npc
Run Code Online (Sandbox Code Playgroud)

出了点问题:只更改了数值,而不是单位.为什么?该怎么办?

编辑:正如下面的一个答案所指出的,这些单位只是带有属性的数字向量.但是,它们的后代unit.arithmeticunit.list应该被认为是完全通用的解决方案(例如,用于调整ggplot对象的面板大小).考虑这个单位向量,

(b = a + unit(1, "npc"))
# [1] 1cm+1npc  2in+1npc  3npc+1npc
# [1] "unit.arithmetic" "unit"   
Run Code Online (Sandbox Code Playgroud)

现在替换特定元素更加棘手,因为它们不再是原子元素.