2010-08-14 22 views
25

Làm cách nào để xem mã nguồn trong R? Ví dụ: đối với chức năng portfolio.optimxem mã nguồn trong R

> require(tseries) 
> portfolio.optim 
function (x, ...) 
UseMethod("portfolio.optim") 
<environment: namespace:tseries> 

> methods(portfolio.optim) 
[1] portfolio.optim.default* portfolio.optim.ts*  

Non-visible functions are asterisked 
> portfolio.optim.ts 
Error: object 'portfolio.optim.ts' not found 
> portfolio.optim.default 
Error: object 'portfolio.optim.default' not found 

Khi tôi cài đặt gói R tại địa phương, bạn cũng tải xuống mã nguồn không? Nó lưu trữ trên máy tính ở đâu? Có ai biết không?

+3

Xem thêm: Uwe Ligges, "R Help Desk: Truy cập các nguồn" _R News_, 6 (4): 43-45, October 2006. http://cran.r-project.org/doc/Rnews/Rnews_2006 -4.pdf –

Trả lời

30
  1. Để đối phó với Non-visible functions are asterisked, điều này có nghĩa rằng các chức năng thực tế được cử vào ts hoặc mặc định đối tượng, tương ứng, là trong không gian tên Tseries nhưng không xuất khẩu. Vì vậy, chỉ cần gõ tseries:::portfolio.optim.default và bạn thấy mã chức năng khi bạn chỉ định bản vá đầy đủ bao gồm cả không gian tên.

  2. Cho dù nguồn tải xuống R hay nhị phân tùy thuộc vào hệ điều hành của bạn. Trong cả hai sự kiện, nguồn cho tseries package is available. Đọc mã nguồn được viết bởi các lập trình viên có kinh nghiệm là một cách hay để học.

+0

Tôi không thể hiển thị mã nguồn cho hàm 'lu' trong gói' Ma trận'. Bạn có thể vui lòng xem? – user236215

22

Chức năng getAnywhere hữu ích khi bạn không biết trong đó không gian tên là hàm.

Được mô tả trong manual hoặc trên chức năng help page.

15

gì bạn có thể làm cho hầu hết các chức năng là nhập chỉnh sửa (functionName) vào cửa sổ lệnh trong R. Trong trường hợp bạn điền vào functionName với tên.

Kết quả là bạn có thể lấy mã nguồn của hàm. Tuy nhiên, tôi đã thử nó cho portfolio.optim chức năng, do đó, nó không hoạt động. Có thể chỉ cho các chức năng tiêu chuẩn.

+0

Tại sao lại là downvote? Tôi đã thử nghiệm này và nó hoạt động trên một chức năng thư viện. –

+0

Mang đến một cửa sổ đẹp mắt trong RStudio. +1! –

5

Nếu nội dung bạn muốn xem là nguồn của một phương pháp cụ thể, bạn có một vài tùy chọn. Một là sử dụng gỡ lỗi (portfolio.optim). Sau đó, khi bạn chạy các chức năng trên một đối tượng, nó nên đi từng bước thông qua các phương pháp, in ra mã như nó đi. Sử dụng 'n' để làm cho nó bước qua, và đừng quên sử dụng undebug (portfolio.optim) khi bạn hoàn tất. Ngoài ra, bạn có thể tải xuống mã nguồn cho gói bạn cần, giải nén và tìm kiếm bất kỳ tệp nào có tên đầy hứa hẹn (phương pháp này rất khó, vì hàm bạn đang tìm kiếm có thể được viết bằng C!). Điều này dễ hơn là tìm kiếm mã trong nhị phân. Nếu bạn đang đi tuyến đường này, mã nên chỉ có sẵn trong một thư mục nén bất cứ nơi nào bạn tải về.

+0

wow. cảm ơn bạn rất nhiều vì hàm 'debug' này. thật tuyệt vời! –