Рассчитать данную формулу в ячейке - PullRequest
1 голос
/ 31 января 2020

Я получил .csv - файл, содержащий более 1000 наблюдений. Там я могу найти столбец только с формулами, как, например, показано в этом тестовом векторе:

formula <- c("[(2+2)+(2+2)+(2+2)]", "[(1+1)+(2+2)+(3+3)+(1+1)]")

Все даны в виде символов. Я сейчас пытаюсь рассчитать каждую формулу в этом файле. Результаты должны иметь числовое значение c: C (12, 14)

Должен ли я сделать это с помощью отдельной функции (), чтобы было несколько новых столбцов, или есть какое-либо другое более простое решение с помощью R ? Я хочу получить команду R, для меня бесполезно редактировать столбец в .csv-файле напрямую.

Ответы [ 2 ]

3 голосов
/ 31 января 2020

Может, вот так?

xy <- c("[(2+2)+(2+2)+(2+2)]", "[(1+1)+(2+2)+(3+3)+(1+1)]")
xy <- gsub("\\[|\\]", replacement = "", xy)

> sapply(xy, FUN = function(x) eval(parse(text = x)))
      (2+2)+(2+2)+(2+2) (1+1)+(2+2)+(3+3)+(1+1) 
                     12                      14
0 голосов
/ 31 января 2020

Этот формат очень похож на ожидаемый ввод для пакета glue

library(glue)

sapply(xy, glue, .open = '[', .close = ']')

# [(2+2)+(2+2)+(2+2)] [(1+1)+(2+2)+(3+3)+(1+1)] 
#                "12"                      "14"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...