2014-04-18 45 views
0

最近,我使用下面的代碼。R:字符「1:10」轉換爲數字1:10?

answer <- readline("please input the number.") 

然後我輸入1:10,然後回車。 這裏答案=「1:10」,如果有一種方法將字符「1:10」轉換爲數字1:10?

+3

醜陋eval(parse(text = ...))類的東西,但'eval(parse(text = answer))'? – A5C1D2H2I1M1N2O1R2T1

+0

爲什麼醜陋?這幾乎是命令行解釋的,對嗎? – BrodieG

+3

@BrodieG醜陋,因爲用戶是刺,並進入'unlink(every_file_everywhere)'。 –

回答

3

您可以嘗試

x = '1:10' 
inp = as.integer(strsplit(x, ':')[[1]]) 
inp[1]:inp[2] 
[1] 1 2 3 4 5 6 7 8 9 10 

這是醜陋的,但它沒有附帶損害的作品。

+0

謝謝。有用。 – BioChemoinformatics

+1

@kevin,這與'1:10'完全不同。 – A5C1D2H2I1M1N2O1R2T1

+0

@AnandaMahto真實但很容易做出序列,避免了Konrad帶來的錯誤。一些錯誤處理/檢查在這裏可以用來避免惡意活動。 –

2

我的評論作爲回答:看看eval(parse(text = ...))

的基本想法是把它放在一個功能,如:

fun <- function() { 
    answer <- readline("Please input the number: ") 
    eval(parse(text = answer)) 
} 
fun() 

但一般來說,一個人試圖避免R.


library(fortunes) 
fortune(106) 
+0

謝謝大家。我從你那裏學到很多東西,這鼓勵我越來越多地學習R。 – BioChemoinformatics