2014-04-18 46 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