Tôi đang học R và hiện tôi đang đọc cuốn sách này . Để chắc chắn rằng tôi hiểu khái niệm này, tôi đã chạy thử nghiệm sau đây hóa ra khá khó hiểu đối với tôi và tôi đánh giá cao nếu bạn có thể làm rõ nó. Đây là bài kiểm tra mà tôi đã chạy trực tiếp trong trình bao R từ thiết bị đầu cuối (không sử dụng RStudio hoặc Emacs ESS).
> library(lobstr)
>
> x <- c(1500,2400,8800)
> y <- x
> ### So the following two lines must return the same memory address
> obj_addr(x)
[1] "0xb23bc50"
> obj_addr(y)
[1] "0xb23bc50"
> ### So as I expected, indeed both x and y point to the same memory
> ### location: 0xb23bc50
>
>
>
> ### Now let's check that each element can be referenced by the same
> ### memory address either by using x or y
> x[1]
[1] 1500
> y[1]
[1] 1500
> obj_addr(x[1])
[1] "0xc194858"
> obj_addr(y[1])
[1] "0xc17db88"
> ### And here is exactly what I don't understand: x and y point
> ### to the same memory address, so the same must be true for
> ### x[1] and y[1]. So how come I obtain two different memory
> ### addresses for the same element of the same vector?
>
>
>
> x[2]
[1] 2400
> y[2]
[1] 2400
> obj_addr(x[2])
[1] "0xc15eca0"
> obj_addr(y[2])
[1] "0xc145d30"
> ### Same problem!
>
>
>
> x[3]
[1] 8800
> y[3]
[1] 8800
> obj_addr(x[3])
[1] "0xc10e9b0"
> obj_addr(y[3])
[1] "0xc0f78e8"
> ### Again the same problem: different memory addresses
Bạn có thể cho tôi biết lỗi của tôi ở đâu và những gì tôi đã hiểu sai trong vấn đề này?
obj_addr(x[1])
hai lần sẽ cho bạn kết quả khác nhau, vì mỗi số nguyên mới sẽ có địa chỉ riêng.