2012-03-22 29 views
6

Sau đây sẽ ném lỗi "Lỗi trong v $ a: $ điều hành không hợp lệ cho vectơ nguyên tử" (ít nhất là trong R phiên bản 2.14.1):

v <- c(a='a',b='b') 
v$a 

Rõ ràng, R trước đây cho phép này, mà làm cho tôi tò mò là tại sao.

EDIT: Như được chỉ ra bên dưới, v$a sẽ trả về NULL trong các phiên bản trước đó. Thay đổi "khá gần đây" thành "trước đây", vì tôi dựa trên các diễn đàn Internet cũ và đã được sửa chữa bên dưới.

+0

LINK được cung cấp bởi Tyler cho thấy phiên bản "khá gần đây" của bạn được cho là khá méo mó và thậm chí còn cho rằng nó có thể không bao giờ là chiến lược hiệu quả, vì nó sẽ trả về 'NULL' khi bạn nghĩ nó nên đã trả về "a". –

Trả lời

7

Tôi tin rằng lý do là việc sử dụng v$a so với v[['a']] được coi là kém an toàn hơn.

EDIT: Hãy xem LINK để biết thêm chi tiết.

+1

An toàn từ cái gì? –

+22

@MattParker: zombies. –

+2

xem [LINK] (http://tolstoy.newcastle.edu.au/R/e3/help/07/12/5772.html) –

6

Thứ ba đoạn của phần Chi tiết của ?"$":

‘$’ chỉ có giá trị cho các đối tượng đệ quy, và chỉ được thảo luận trong phần dưới đây trên các đối tượng đệ quy. Việc sử dụng nó trên các đối tượng không đệ quy không được chấp nhận trong R 2.5.0 và bị xóa trong R 2.7.0.

R-2.7.0 được phát hành vào tháng 4 năm 2008. Bốn năm xa "gần đây", nhưng có thể bạn đã có một vài phiên bản sau một thời gian?

+0

Cảm ơn. Bất kỳ ý tưởng tại sao nó không được chấp nhận cho các đối tượng không đệ quy? Nó là khá gần đây về ngôn ngữ ... loại :-). Tôi đã thực sự chỉ sử dụng R trong khoảng một năm, vì vậy thay đổi này là trước thời gian của tôi. – Jonathan

+1

@ Jonathan: xem liên kết/thảo luận trong phần bình luận của [câu trả lời của Tyler Rinker] (http://stackoverflow.com/a/9824326/271616). –

Các vấn đề liên quan