R: eval(parse(…)) часто неоптимален

require('fortunes')
fortune('106')
Personally I have never regretted trying not to underestimate my own future stupidity.
   -- Greg Snow (explaining why eval(parse(...)) is often suboptimal, answering a question triggered
      by the infamous fortune(106))
      R-help (January 2007)

Итак, если eval(parse(...))неоптимальна, каков другой способ выполнить это?

Я вызываю некоторые данные с веб-сайта с помощью RCurl, что я получаю после использования fromJSON()в пакете rjson — это список в списке. Часть списка имеет имя номера заказа, который будет меняться в зависимости от заказа. Список выглядит примерно так:

$orders
$orders$'5810584'
$orders$'5810584'$quantity
[1] 10

$orders$'5810584'$price
[1] 15848

Я хочу извлечь значение из $orders$'5810584'$price

Допустим, список находится в объекте datЧто я сделал, чтобы извлечь это, используя eval(parse(...))было:

or_ID <- names(dat$orders) # get the order ID number
or_ID
"5810584"
sell_price <- eval(parse(text=paste('dat$',"orders$","'", or_ID, "'", "$price", sep="")))
sell_price
15848

Что было бы более оптимальным способом сделать это?

11
задан Kevin 14 June 2012 в 00:23
поделиться