#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