我正在尝试使用他们的API从OpenEI数据库中提取一些数据并将其变为可用格式,但是我无法提取某些数据。例子如此:
library(RCurl)
library(rjson)
rate_name <- 'Data:B386166e-7e84-42fa-b8ae-1a4b07fb05d9'
data <- getURL(paste('http://en.openei.org/services/rest/utility_rates?version=2&format=json&detail=full&getpage=' ,rate_name, '&detail=full', sep = ''))
data2 <- fromJSON(data)
x <- 3
现在:
data2 $ items [[1]] $`energyratestructure / period3 / tier1rate`
[1] 0.0573
和
> paste('data2$items[[1]]$`energyratestructure/period', x, '/tier1rate`', sep = '')
[1] "data2$items[[1]]$`energyratestructure/period3/tier1rate`"
可是:
> get(paste('data2$items[[1]]$`energyratestructure/period', x, '/tier1rate`', sep = ''))
Error in get(paste("data2$items[[1]]$`energyratestructure/period", x, :
object 'data2$items[[1]]$`energyratestructure/period3/tier1rate`' not found
我需要一种方法来获取paste()
中对象的值 - 第一个对象。这可能很容易,但我不知所措。
答案 0 :(得分:4)
您不能使用get
来提取对象的一部分。只需使用标准索引运算符[[
,并使用paste
构建标签。
data2$items[[1]][[paste0("energyratestructure/period", x, "/tier1rate")]]
(澄清一下,如果您不知道:x$y
与x[["y"]]
相同,其中"y"
是一个字符串,给出您要提取的元素的名称。)