Как читать вектор в качестве пользователя ввода в 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

Может ли кто-нибудь помочь мне с этой проблемой? Как я должен писать последовательности? Спасибо.


person Víctor    schedule 01.12.2017    source источник


Ответы (1)


Вы можете использовать (не)известную конструкцию 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"
person Maurits Evers    schedule 01.12.2017
comment
Это именно то, что мне было нужно! Спасибо за вашу помощь. - person Víctor; 01.12.2017
comment
Отлично, рад помочь @Víctor - person Maurits Evers; 01.12.2017