Я пытаюсь портировать некоторый код для использования пакета mmap.У меня проблема с доступом к столбцам фрейма данных.
Я хотел бы иметь возможность доступа к столбцам данных с операторами $
и [[
.Вот результаты, которые я получаю.
> foo <- as.mmap(mtcars)
> foo[,'mpg'] # works
mpg
1 21.0
2 21.0
3 22.8
4 21.4
5 18.7
...
> foo$mpg #does not work
NULL
> foo[['mpg']] #also does not work
NULL
> foo[]$mpg #works
...
> foo[][['mpg']] #also works
...
Можно ли заставить операторы $
и [[
работать с отображаемым в памяти объектом, как если бы они работали в обычном фрейме данных?
Редактировать: По предложению Джошуа я добавил функцию для [[
`[[.mmap` <- function(x,...) `[[`(x[],...)
и для $
, которая не выглядит особенно элегантной, но, кажется, работает.
> `$.mmap` <- function(x,...) {
if (...%in%c("storage.mode","bytes","extractFUN","filedesc")){
get(...,envir=x)
}else {
eval(call('$',x[],substitute(...)))
}}