私はこれまでに数回これに悩まされていました。だから、同じ問題につまずくかもしれない他の人たちのために作られた質問です。 グリッド単位ベクトルの要素置換
は、私が新しい値でいくつかの要素を交換したいa = unit(1:3, c("cm", "in", "npc"))
、このグリッド単位ベクトルを考えてみましょう。自然なアプローチは、
a[1] = unit(2,"pt")
a
# [1] 2cm 2in 3npc
何かが間違っていたことになります数値のみがないユニット、変更されました。どうして?何をすべきか?
編集:以下の1つの答えで指摘したように、このような単位は属性を持つ数値ベクトルに過ぎません。しかし、その子孫unit.arithmetic
とunit.list
は、完全に一般的な解決策(例えば、ggplotオブジェクトのパネルサイズの調整に使用する)とも考えられます。
(b = a + unit(1, "npc"))
# [1] 1cm+1npc 2in+1npc 3npc+1npc
# [1] "unit.arithmetic" "unit"
ここで、特定の要素を置き換えることは、もはや原子ではないので、よりトリッキーです。
しかし、私はあなたがすでにこれを知っていると感じています。 – LyzandeR
私は答えを書いている最中でしたが、一点で立ち往生しました。あなたのアプローチは正しいですが、ユニットベクトルにunit.arithmetic: 'b = a + unit(1、" npc ")'などのより複雑な要素も含めることができるので、全面的ではないと恐れています。私は質問を編集します。 – baptiste
'unit.arithmetics'でどこが間違っているのか分かります。 '[< - 'メソッドを実装することが難しいと言うなら、私はあなたを信じない理由がありません。 'unit.list'は十分な解決策のようです。 – LyzandeR