12
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 を使用して Web サイトからいくつかのデータを呼び出していますfromJSON()。rjson パッケージで使用した後に得られるのは、リスト内のリストです。リストの一部には、注文によって変わる注文番号の名前があります。リストは次のようになります。

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

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

値を抽出したい$orders$'5810584'$price

リストが object にあるとします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

これを行うためのより最適な方法は何でしょうか?

4

1 に答える 1

19

実際には、リストはおそらく少し異なって見えます。'$' の規則はやや誤解を招く可能性があります。これを試して:

dat[["orders"]][[ or_ID ]][["price"]]

「$」はその引数を評価しませんが、「[[」は評価するため、or_ID「5810584」に変換されます。

于 2012-06-14T01:03:15.983 に答える