Я изучаю поведение R и понял кое-что странное.
Я буду использовать пакет geoR в качестве эталона, так как именно с ним я работаю.
Кажется, я не понимаю, как работают списки подмножеств. У меня есть следующий код.
install.packages("geoR", dependencies = T)
library(geoR)
v.1 <- variog(wolfcamp)
v.2 <- variog(wolfcamp, trend = "1st")
vg <- list(v.1, v.2)
names(vg) <- c("Constant", "Linear")
В котором я создаю две вариограммы (природа этих функций значения не имеет). Это объекты класса "вариограмма", в чем можно быстро убедиться.
Внутри каждой вариограммы есть два вектора, «u» и «v», которые я хочу извлечь. Поскольку я помещаю их в список, я ожидаю, что смогу получить их с помощью простого подмножества.
>vg[1]$Constant$u
[1] 16.77718 50.33154 83.88591 117.44027 150.99463 184.54899 218.10335
[8] 251.65772 285.21208 318.76644 352.32080 385.87517 419.42953
>vg[1]$Constant$v
[1] 1796.634 3690.930 7857.991 12440.353 23165.716 31798.304
[7] 38956.743 52007.883 67601.931 94523.535 159900.019 186464.824
[13] 219033.678
Теперь, если я вызову тот же объект со средним подмножеством в кавычках, я получу тот же результат.
> vg[1]$"Constant"$u
[1] 16.77718 50.33154 83.88591 117.44027 150.99463 184.54899 218.10335
[8] 251.65772 285.21208 318.76644 352.32080 385.87517 419.42953
Но если я вызову подмножество на выходе функции или объекте, определенном как выход функции, результат будет другим.
k <- names(vg)[1]
> vg[1]$k$u
NULL
Почему это происходит? Связано ли это с мельчайшими подробностями определения вариограммы класса или есть что-то, чего я не понимаю в подмножестве списка? Спасибо
[
вместо$
т.е.vg[1][[k]]$v
Это более общее поведение, чем вариограмма класса - person akrun   schedule 26.11.2017vg[1]
не нужен, так как это может бытьvg$Constant$u
илиvg[[k]]$u
илиvg[[1]]$u
- person akrun   schedule 26.11.2017vg[[k]]$u# [1] 16.77718 50.33154 83.88591 117.44027 150.99463 184.54899 218.10335 251.65772 285.21208 318.76644 352.32080 385.87517 419.42953
- person akrun   schedule 26.11.2017