如何在 R 中读取向量作为输入用户

How to read a vector as input user in R

我是 R 的新手,在工作时我遇到了一个我自己无法解决的问题。我想在控制台中创建一个脚本或序列,让用户引入一个向量作为输入,但不是任何向量,特别是,我需要引入向量:j<-c(1:20,4,30:35).

但是,如果我尝试使用:

limStr <- readline("Enter the vector you want:");
Enter the vector you want: j<-c(1:20,4,30:35)
lim <- as.numeric(unlist(strsplit(limStr, ","))); 

我有lim= NA 4 NA

有人可以帮我解决这个问题吗?我应该如何编写序列?谢谢。

您可以使用(著名的)eval(parse(text = ...) 结构:

limStr <- readline("Enter the vector you want:");
Enter the vector you want: c(1:20, 4, 30:35);    
lim <- eval(parse(text = limStr));
lim;
# [1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20  4 30 31 32 33
#[26] 34 35 

再想想,我不太确定你想要什么。如果这是关于提取逗号分隔的术语,你可以做

unlist(strsplit(gsub("(c\(|\))", "", limStr), ", "));
#[1] "1:20"  "4"     "30:35"