Tôi đã bị bối rối bởi điều này một vài lần rồi, vì vậy đây là câu hỏi đã được thực hiện cho những người khác có thể vấp ngã cùng một vấn đề.thay thế phần tử trong vector đơn vị lưới
xem xét vector đơn vị lưới này,
a = unit(1:3, c("cm", "in", "npc"))
Tôi muốn thay thế một số yếu tố với các giá trị mới. Cách tiếp cận tự nhiên sẽ là,
a[1] = unit(2,"pt")
a
# [1] 2cm 2in 3npc
Đã xảy ra sự cố: chỉ giá trị số được thay đổi chứ không phải đơn vị. Tại sao? Phải làm gì?
Chỉnh sửa: Như được chỉ ra trong một câu trả lời bên dưới, các đơn vị như vậy chỉ là các vectơ số với các thuộc tính. Tuy nhiên, offsprings của họ unit.arithmetic
và unit.list
cũng nên được coi là giải pháp hoàn toàn chung (ví dụ: sử dụng trong điều chỉnh kích thước bảng điều khiển của các đối tượng ggplot). Xem xét vectơ đơn vị này,
(b = a + unit(1, "npc"))
# [1] 1cm+1npc 2in+1npc 3npc+1npc
# [1] "unit.arithmetic" "unit"
Bây giờ thay thế một phần tử cụ thể thì phức tạp hơn, vì chúng không còn nguyên tử nữa.
Tuy nhiên, tôi có cảm giác rằng bạn đã biết điều này. – LyzandeR
Tôi đang ở giữa viết câu trả lời, nhưng bị kẹt tại một thời điểm. Cách tiếp cận của bạn là chính xác, nhưng tôi lo sợ không hoàn toàn chung vì các vectơ đơn vị cũng có thể chứa các phần tử phức tạp hơn, chẳng hạn như unit.arithmetic: 'b = a + unit (1," npc ")'. Tôi sẽ chỉnh sửa câu hỏi. – baptiste
Tôi có thể thấy nơi nó có thể đi sai với 'unit.arithmetics'. Nếu bạn nói rằng phương pháp '[<-' sẽ khó thực hiện thì tôi không có lý do gì để không tin bạn. 'unit.list' có vẻ như là một giải pháp đủ tốt tbh. – LyzandeR