2013-07-22 36 views
13

Giả sử tôi có một kịch bản R:Làm cách nào để tránh tập lệnh R của tôi được in mỗi khi tôi chạy?

library('nnet')  
something <- runif(50); 
print(something) 

Khi tôi chạy kịch bản này từ dòng lệnh, nó in:

> library('nnet') 
> something <- runif(5); 
> print(something) 
[1] 0.04665518 0.93574275 0.96387299 0.07410239 0.92834019 

Tôi muốn nó để in chỉ:

[1] 0.04665518 0.93574275 0.96387299 0.07410239 0.92834019 

và tôi không thể tìm ra cách để làm điều này. sink ("/ dev/null") không làm bất cứ điều gì, chuyển hướng stderr bằng tay không làm bất cứ điều gì, và tôi không thể tìm thấy bất kỳ thông tin hữu ích về điều này.

+4

Làm thế nào bạn có đang chạy nó "tại dòng lệnh"? 'Rscript foo.R' chỉ in những gì bạn muốn ... –

+3

Và trong nguồn R' ("foo.R") 'thường sẽ không hiển thị bất cứ điều gì của kịch bản, trừ khi bạn yêu cầu nó thông qua' nguồn ("foo.R" , echo = TRUE) '. Hãy cho chúng tôi thấy ** chính xác ** những gì bạn đang cố gắng/đang làm. –

+1

Rscript dường như là những gì tôi đã mất tích. Các bài viết khác trên SE và ở nơi khác chạy các kịch bản với "R

Trả lời

19

Nghị quyết là để chạy với Rscript, và không phải với R. Ví dụ ở nơi khác (ví dụ How can I read command line parameters from an R script?), kịch bản chạy từ dòng lệnh với

R --args args1 args2... < foo.R 

chạy với

Rscript foo.R args1 args2 ... 

chỉ tạo đầu ra chứ không phải tập lệnh. Nó cũng là một cách sạch hơn để chạy kịch bản.

+1

+1 Công việc tốt trả lời câu hỏi của riêng bạn. –

+1

+1 Điểm nhỏ, "kém thực hiện" không được cho phép. R không phải lúc nào cũng có 'RScript' & câu hỏi và câu hỏi mà bạn liên kết đến hơn 3 năm nay. Tôi nghi ngờ việc sử dụng 'RScript' đã không nhúng chính nó vào tâm lý của nhiều người dùng R tại thời điểm đó. Cũng lưu ý rằng những ví dụ đó không trả lời câu hỏi của bạn - bạn không muốn kịch bản của bạn lặp lại, đó là một vấn đề khác và nó là sai lầm khi chỉ trích vì thiếu kỹ năng nhận thức. –

+1

@GavinSimpson Điểm công bằng. Tôi đã cập nhật câu trả lời cho phù hợp. –

2

Không phải là người dùng R, nhưng đây có phải là thứ hữu ích cho bạn không? How can I run an 'R' script without suppressing output?

Từ câu hỏi liên quan:

định print.eval tham số thiết lập để TRUE nếu bạn muốn nhận được chỉ đầu ra (và không phải là lệnh). Nếu bạn cũng cần các lệnh, bạn nên đặt echo thành TRUE (ngụ ý thiết lập print.eval thành TRUE).

Ví dụ:

source('myscript.R', print.eval = TRUE) 
2
source('path/name/filnam.R' , verbose=FALSE) 
1

Đối với chạy trong nhà ga trực tiếp:

R --slave --args dense 12 0.98 < transformMatrixToSparseMatrix.R 

Đối với chạy kịch bản R từ Python:

process = subprocess.Popen(["R --slave --args %s %d %.2f < /path/to/your/rscript/transformMatrixToSparseMatrix.R" % (, 12, 0.98) ], shell=True) 
process.wait() 

Xem thêm this reference

0

Đối RStudio IDE (Phiên bản 1.1.383) trong Windows:

.210

Nhấn Ctrl + Shift + Enter phím chạy toàn bộ kịch bản với echo (verbose)

Nhấn Ctrl + Shift + S phím chạy toàn bộ kịch bản mà không echo (phi verbose)

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