我有一个列表列表,例如“ testccffilt”下方的输入示例。我正在尝试返回一个列表,在其中我从每个列表和滞后中选择名称。例如,对于第一个列表,它将是:
c(‘TimeToShip’,1)
我尝试了下面的lapply示例,但它并没有提供我想要的输出。我在下面也提供了想要的输出类型的示例。任何提示都非常感谢。
输入:
> testccffilt
$TimeToShip
cor lag
3284 0.9998749 1
$TimeToRelease
cor lag
3285 0.9997293 2
尝试:
testlist<-lapply(testccffilt,function(x)list(names(x),x$lag))
测试列表
$TimeToShip
$TimeToShip[[1]]
[1] "cor" "lag"
$TimeToShip[[2]]
[1] 1
$TimeToRelease
$TimeToRelease[[1]]
[1] "cor" "lag"
$TimeToRelease[[2]]
[1] 2
所需的输出:
[[1]]
[1] "TimeToShip" "1"
[[2]]
[1] "TimeToRelease" "2"
dput(testccffilt)
structure(list(TimeToShip = structure(list(cor = 0.999874880882358,
lag = 1), .Names = c("cor", "lag"), row.names = 3284L, class = "data.frame"),
TimeToRelease = structure(list(cor = 0.999729343078789, lag = 2), .Names = c("cor",
"lag"), row.names = 3285L, class = "data.frame")), .Names = c("TimeToShip",
"TimeToRelease"))
答案 0 :(得分:1)
这是使用for循环的一种选择
out <- vector(mode = "list", length(testccffilt))
for (i in 1:length(testccffilt)) {
out[[i]] <- c(names(testccffilt)[[i]], testccffilt[[i]][["lag"]])
}
out
#[[1]]
#[1] "TimeToShip" "1"
#[[2]]
#[1] "TimeToRelease" "2"
另一个选择是lapply
,可能会更快。
lapply(1:length(testccffilt), function(x)
c(names(testccffilt)[[x]], testccffilt[[x]][["lag"]]))