我想获取一个列表列表并将文件名与原始列表中的键一起存储,但我无法在 for 循环中获取要评估的键。这是我的代码:
input_metadata = list(dog = list(filename = "dog.png", rating = 7),
cat = list(filename = "kitty.png", rating = 9))
for (key in (names(input_metadata))) {
print(key)
print(input_metadata[[key]]$filename)
temp_list <- list( key
= input_metadata[[key]]$filename)
data_list <- append(data_list, temp_list)
}
print(data_list)
这是输出:
[1] "dog"
[1] "dog.png"
[1] "cat"
[1] "kitty.png"
> print(data_list)
[[1]]
[1] NA
$key
[1] "dog.png"
$key
[1] "kitty.png"
这接近我想要的。我想摆脱最初的 NA 并且我希望键是狗和猫(键的值),而不是“键”。我怎样才能做到这一点?
如何获取 data_list 中的键以匹配 input_metadata 中的键?
只要我理解正确,你就可以做到
使用purrr
data_list <- purrr::map(input_metadata, ~ .x$filename)
# Or
data_list <- purrr::map(input_metadata, purrr::pluck, "filename")
或者在基础 R
data_list <- lapply(input_metadata, function(x) x$filename)
# Or
data_list <- lapply(input_metadata, "[[", "filename")
# Or in R>=4.1.0
data_list <- lapply(input_metadata, \(x) x$filename)
以上所有给出
#$dog
#[1] "dog.png"
#
#$cat
#[1] "kitty.png"
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句