2014-03-07 68 views
3

我想讓用戶輸入一個查詢的幾個關鍵字,並在我的腳本中使用掃描或readline。我嘗試使用R-embed腳本編輯器(Windows),但是當我執行代碼時,它使用我的下一行腳本作爲標準輸入。 這是我(的一部分)腳本R語言 - 等待用戶輸入掃描或readline

keywords <- scan(what=character(), nlines=1) 
keywords <- paste(keywords, collapse=",") 
keywords 

在這裏,從編輯

> keywords <- scan(what=character(), nlines=1) 
1: keywords <- paste(keywords, collapse=",") 
Read 4 items 
> keywords 
[1] "keywords"  "<-"    "paste(keywords," "collapse=\",\")" 

同時,當我使用源()命令,我有我的用戶輸入尊重執行時是輸出。

那麼有沒有什麼辦法可以在從R軟件執行代碼的同時輸入一些東西?

+0

我剛剛在Rstudio試過,沒問題。你應該試試Rstudio。 – xgdgsc

回答

2

這是我如何使用readLInes

FUN <- function(x) { 

    if (missing(x)) { 
     message("Uhh you forgot to eneter x...\nPlease enter it now.") 
     x <- readLines(n = 1) 
    } 
    x 
} 

FUN() 

或者也可以是沿着這些線路:

FUN2 <- function() { 

    message("How many fruits will you buy") 
    x <- readLines(n = 1) 

    message("Good you want to buy %s fruits.\n Enter them now.") 
    y <- readLines(n = x) 
    paste(y, collapse = ", ") 
} 

FUN2() 

編輯:隨着RGUI你的方法...

FUN3 <- function(n=2) { 
    keywords <- scan(what=character(), nlines=n) 
    paste(keywords, collapse=",") 
} 

## > FUN3 <- function(n=2) { 
## +  keywords <- scan(what=character(), nlines=n) 
## +  paste(keywords, collapse=",") 
## + } 
## > FUN3() 
## 1: apple 
## 2: chicken 
## Read 2 items 
## [1] "apple,chicken" 
+0

我試圖寫一些「小」(一行或兩行),但我會使用你的功能,因爲她是一個工作。謝謝! [編輯]其實我仍然有問題,但我認爲這只是由於使用腳本行作爲標準輸入法的RGUI,所以沒有別的辦法。 – aaaaaaa

+0

當我將你的功能封裝起來並在Rgui(Windows OS)上使用時,它可以工作。 –

+0

你是否在運行整個腳本塊?當我在控制檯中使用它們時,你的函數可以正常工作,但是如果我嘗試運行類似於 'keywords < - FUN();關鍵字< - 粘貼(blabla)' ,它仍然使用第二行作爲輸入 – aaaaaaa