2012-01-22 36 views
7

Tôi đang viết một tập lệnh sử dụng roxygen2 để tự động roxygenize gói của tôi. Tôi muốn nó được thực thi để nó có thể là một phần của một kịch bản lớn hơn để chuẩn bị và cài đặt các gói, nhưng tôi không thể làm cho nó làm việc với Rscript vì lý do nào đó.Không thể gọi hàm roxygenize từ tệp lô Rscript

Đây là mã:

#!/usr/bin/env Rscript 
library(roxygen2) 
roxygenize('.', copy=FALSE) 

này hoạt động một cách chính xác nếu tôi bắt đầu một phiên R tương tác hoặc nếu tôi gửi mã sử dụng R CMD BATCH. Tuy nhiên, tôi nhận được đầu ra và lỗi này nếu tôi chạy tập lệnh trực tiếp dưới dạng tệp thực thi qua Rscript (và tôi nhận được lỗi bất kể tập lệnh có nằm trong thư mục hiện tại hay thùng).

bin/roxygenize.R 
Loading required package: digest 
Warning message: 
package 'roxygen2' was built under R version 2.13.2 
Error in parse.files(r_files) : could not find function "setPackageName" 
Calls: roxygenize -> parse.files 
Execution halted 

Dường như setPackageName là ở cơ sở R, vì vậy tôi không thể tìm ra lý do tại sao nó không có ở đó. Ngoài ra, tôi sử dụng Rscript trong rất nhiều tình huống khác và điều này có vẻ là nơi duy nhất mà nó không thành công.

Bất kỳ trợ giúp nào được đánh giá cao.

+5

Đây là lỗi trong roxygen. Cho đến khi phiên bản tiếp theo xuất hiện, hãy làm việc xung quanh nó bằng cách tải các phương thức và utils một cách rõ ràng. – hadley

+0

Cảm ơn, Hadley. Không biết tại sao lại khiến tôi khốn khổ. –

Trả lời

5

Tải gói rõ ràng methodsutils trước khi tải roxygen2 và gọi roxygenize().

#!/usr/bin/env Rscript 
library(methods) 
library(utils) 
library(roxygen2) 
roxygenize('.', copy=FALSE) 
+0

Làm việc như một say mê, cảm ơn! – dardisco

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