Đổi tên một đối tượng và các colnames bên trong nó là một quá trình hai bước:
SPY <- GSPC# assign the object to the new name (creates a copy)
colnames(SPY) <- gsub("GSPC", "SPY", colnames(SPY)) # rename the column names
Nếu không, getSymbols chức năng cho phép bạn không auto assign, trong trường hợp này bạn có thể bỏ qua bước đầu tiên (bạn sẽ vẫn cần phải đổi tên các cột).
SPY <- getSymbols("^GSPC", auto.assign=FALSE)
Cảm nhận từ @backlin
R sử dụng cái gọi là đánh giá lười biếng. Một hiệu ứng của điều đó là khi bạn "sao chép" SPY <- GSPC
bạn không thực sự phân bổ không gian mới trong bộ nhớ cho SPY
. R biết các đối tượng giống hệt nhau và chỉ tạo một bản sao mới trong bộ nhớ nếu một trong số chúng được sửa đổi (tức là khi chúng không còn giống hệt, ví dụ: khi bạn thay đổi tên cột trên dòng sau). Vì vậy, bằng cách làm
SPY <- GSPC
rm(GSPC)
colnames(SPY) <- gsub("GSPC", "SPY", colnames(SPY))
bạn không bao giờ thực sự sao chép GSPC
nhưng chỉ đơn thuần cung cấp cho nó một cái tên mới (SPY
) và sau đó nói với R để quên tên đầu tiên (GSPC
). Khi bạn thay đổi tên cột, bạn không cần phải tạo một bản sao mới của SPY
vì GSPC
không còn tồn tại, có nghĩa là bạn đã thực sự đổi tên đối tượng mà không tạo bản sao trung gian.
Hàm gsub() hoạt động hoàn hảo cho mục đích của tôi. Cảm ơn một lần nữa Shane. – Milktrader
Điều này làm tôi bối rối một thời gian, vì vậy tôi muốn thêm phần vào đánh giá lười biếng để làm rõ nó cho những người khác nữa. Tôi có bộ nhớ và thời gian đã lược tả ví dụ để xác minh rằng điều này thực sự là những gì xảy ra bên trong R. – Backlin
cảm ơn cho lưu ý về đánh giá lười biếng! –