2012-05-09 33 views
5

Tôi đang sử dụng phiên bản R/xts/zoo mới nhất trên Windows: R 2.15, xts 0.8-6, zoo 1.7-7zoo/xts - không thể làm toán trên các tập con 1 ô? R treo

Tôi thấy hành vi kỳ lạ sau đây, không phải như vậy các phiên bản trước:

library(xts) 
data(sample_matrix) 
sample.xts <- as.xts(sample_matrix) 

sample.xts[1, 2] - sample.xts[2,2]  # results in numeric(0)?!?!?! 
(sample.xts[ 1, 2] - sample.xts[2,2])/sample.xts[3,1] # if I run this twice R locks up 

Ở đây tôi đã đặt một đối tượng XTS thành một ô duy nhất. Phép trừ không còn hoạt động nữa. Ngoài ra, sự phân chia khiến R bị khóa hoàn toàn.

Có ai khác nhìn thấy điều này không? Đây có phải là lỗi đã biết hoặc tôi đang thiếu thứ gì đó không? Tôi có thể tái tạo điều này trên hai máy.

phiên Info (một vài gói xóa giữ bí mật):

R version 2.15.0 (2012-03-30) 
Platform: x86_64-pc-mingw32/x64 (64-bit) 

locale: 
[1] LC_COLLATE=English_United States.1252 LC_CTYPE=English_United States.1252 LC_MONETARY=English_United States.1252 
[4] LC_NUMERIC=C       LC_TIME=English_United States.1252  

attached base packages: 
[1] parallel stats  graphics utils  datasets grDevices methods base  
+0

BTW, tôi nghĩ điều này có liên quan đến hoạt động tập hợp con trả lại đối tượng zoo/xts thay vì số được đặt tên. Có lẽ điều này được sử dụng để làm việc cho tôi vì (các) môi trường của tôi đã được thiết lập sao cho '[' đã bị tấn công bởi một gói khác? Dù sao, không giải thích sự sụp đổ! – SFun28

+0

Kết quả từ 'sessionInfo' có thể giúp xác định lý do tại sao điều này làm việc cho bạn trong quá khứ. Ngoài ra, "treo" hoặc "khóa" không giống như tai nạn. Trong một vụ tai nạn, chương trình chấm dứt. Bất kể, hành vi là không mong muốn. –

+0

Bạn chính xác về lỗi v. Treo. Tôi đã rất ấn tượng. =) Tôi đã cập nhật tiêu đề. Cảm ơn bạn đã tip về sessionInfo()! – SFun28

Trả lời

2

Bạn không bao giờ có thể trừ XTS/đối tượng sở thú với chỉ số không chồng chéo. Các phép toán số học luôn hợp nhất trước khi thực hiện thao tác. Bạn cần sử dụng coredata để trừ số tiền bạn đã viết để cung cấp kết quả bạn mong đợi.

coredata(sample.xts[1,2]) - coredata(sample.xts[2,2]) 

tôi có thể tái tạo vấn đề thứ hai nhưng tôi không chắc chắn đây phải là một ưu tiên cao để sửa chữa, bởi vì nó không phù hợp với sở thú/XTS thành ngữ và sẽ cho kết quả trong một đối tượng XTS hoàn toàn trống rỗng. Mọi thứ đều ổn nếu (một số) các chỉ số căn chỉnh.

(sample.xts[1,2] - sample.xts[1,3])/sample.xts[1,4] 
(sample.xts[2,2] - sample.xts[1:2,3])/sample.xts[2:3,4] 
+0

Tôi nghĩ rằng điều này đã làm việc cho tôi trong quá khứ bởi vì chức năng gói của tôi đã chuyển đổi các đối tượng xts sang tên số qua [. Tôi nghĩ rằng đây là trường hợp bởi vì các chức năng không thể tìm thấy [.zoo và giảm trở lại trên thường-cũ-ma trận [. Vì vậy, một cái gì đó về môi trường của tôi phải có thay đổi như vậy mà chức năng gói của tôi bây giờ đang tìm kiếm [.zoo. Điều đó có ý nghĩa? – SFun28

+0

@JoshuaUlrich: Dường như một lỗi _should_ được báo cáo thay vì gây ra "treo" có vẻ như yêu cầu khởi động lại và về cơ bản là "lỗi tương đương". –

+0

@DWin: Tôi biết, tôi biết. Nhưng tôi thực sự muốn nói, "thì đừng làm thế." –

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