这是DataCamp的练习,我在这里问这个问题,只是为了理解调用命名列表的行为。
此处的目标是创建一个函数来访问名为$timestamp
的列表中的命名对象logs
,然后使用lapply
并仅从{{1}打印$timestamp
}。我不明白为什么在函数内外调用相同命令时R的行为不同。
日志主管看起来像这样:
logs
我们需要访问上面列表中的所有head(logs, 2)
[[1]]
[[1]]$success
[1] TRUE
[[1]]$details
[[1]]$details$message
[1] "check"
[[1]]$timestamp
[1] "2015-09-14 23:01:07 UTC"
[[2]]
[[2]]$success
[1] TRUE
[[2]]$details
[[2]]$details$message
[1] "all good"
[[2]]$timestamp
[1] "2015-09-15 00:00:13 UTC"
个对象。为此,必须创建一个函数:
$timestamp
该函数的主体使用get_timestamp = function(x) {return(x[["timestamp"]])}
。我不明白的是,为什么要直接打电话:
x[["timestamp"]]
结果:
logs[["timestamp"]]
get_timestamp(logs)
但是打电话:
NULL
返回所有时间戳,这是整个练习的目标。
lapply(logs, get_timestamp)
感谢您解释此事。