Вот несколько шагов, которые сделают то, что вы хотите сделать. Не могу сказать, что это является наиболее эффективным и элегантное решение доступно ...
string <- "[(1.33738072607023, 27.9489435205271)]"
string <- gsub("[^[:digit:]\\. \\s]", "", string)
splt <- strsplit(string, " ")[[1]]
names(splt) <- c("x","y")
FOO <- function(name, strings) {
assign(name, as.numeric(strings[name]), globalenv())
invisible()
}
lapply(c("x","y"), FOO, strings = splt)
Последняя строка вернется:
> lapply(c("x","y"), FOO, strings = splt)
[[1]]
NULL
[[2]]
NULL
И мы x
и y
назначены в глобальной среде
> x
[1] 1.337381
> y
[1] 27.94894
@Joris, вы можете 'assign' в другую среду и прикрепить ее, который имеет эффект сохранения глобальной окружающей среды в чистоте, но позволяя прямым доступ к объектам. –
для назначения некоторых x и y, что кажется очень переполненным. И действительно, можно начать играть со средой, но лично я предпочитаю списки. Точно так же, идет немного быстрее и дает меньше отладки головных болей. YMMV –
@Joris, который был в ответ на линию «больших наборов данных»; согласитесь, это слишком много для примера @ Брани. Мне тоже нравятся списки, но вам все равно нужно индексировать их в список для доступа к компонентам или использовать 'with()', если вы не присоедините его ... –