У меня есть функция, с которой я хотел бы быть в состоянии вернуть довольно расслабленный набор структур:(s) применяя подмножество (т.е. `[`) для различных списков структур
str1 <- list(
list(
key = 123,
data = "test"
),
list(
key = 987,
data = "test"
)
)
str2 <- list(
c(key = 123, data = "test"),
c(key = 987, data = "test")
)
str3 <- list(
key = 123,
data = "test"
)
str4 <- c(key = 123, data = "test")
С эти возвращаемые значения я хотел бы иметь возможность фиксировать все ключевые значения в сжатой форме.
Моя попытка поймать все решение было это:
sapply(str1, `[`, "key")
Однако, это работает только для вложенных структур (str1
& str2
). Остальные возвращаются NA
.
мне очень интересно, почему я могу это сделать:
str4["key"]
# 123
sapply(c(key = 1), `+`, 1)
# 2
... но не это?
sapply(c(key = 123), `[`, "key")
# NA
Меня не интересует обходной путь, так как я должен понять, где я здесь ошибся.
Это здорово, спасибо! Теперь это кажется очевидным, как всегда, но мне нравится трюк 'browser(), который будет полезен много раз, я уверен. – 17843
это лучший способ отладки и понимания! –