Разделите строку в R на несколько знаков

#r #string

Вопрос:

Как я могу разделить строку, например

 x = "0.989(0.975)amp;0.964(0.937)amp;0.877(0.771)amp;amp;0.962(0.903)amp;0.971(0.867)amp;0.932(0.828)amp;amp;0.984(0.892)amp;0.937(0.869)amp;0.910(0.722)amp;amp;0.970(0.867)amp;0.942(0.811)amp;0.875(0.747)"
 

для получения всех чисел используется числовой вектор, такой как

 y = c(0.989, 0.975, 0.964, 0.937, 0.877)
 

и так далее.

Я хочу исключить круглые скобки, » amp; » и «amp;amp;».

Ответ №1:

Используйте gsub с scan , т. е. gsub замените все символы, отличные от . цифр и, одним разделителем , , а затем scan прочитайте его сразу

 out <- scan(text = gsub("[^.0-9] ", ",", x), what = numeric(), 
    sep=",", quiet = TRUE)

str(out)
#num [1:25] 0.989 0.975 0.964 0.937 0.877 0.771 0.962 0.903 0.971 0.867 ...
 

Ответ №2:

Другой вариант использования regmatches as.numeric

 as.numeric(regmatches(x, gregexpr("\d \.\d ", x))[[1]])
 

дает

  [1] 0.989 0.975 0.964 0.937 0.877 0.771 0.962 0.903 0.971 0.867 0.932 0.828
[13] 0.984 0.892 0.937 0.869 0.910 0.722 0.970 0.867 0.942 0.811 0.875 0.747