Я пытаюсь передать некоторый код для использования пакета mmap. У меня возникла проблема с доступом к столбцам фреймов данных.Доступ к столбцам Frame Data Frame в объектах R 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
...
Есть ли способ, чтобы сделать работу $
и [[
операторы на памяти отображается объект, так как они были бы на регулярной фрейме данных?
Edit: предложение Per Джошуа я добавил функцию [[
`[[.mmap` <- function(x,...) `[[`(x[],...)
И $
, который, кажется, не особенно элегантно, но, кажется, работает.
> `$.mmap` <- function(x,...) {
if (...%in%c("storage.mode","bytes","extractFUN","filedesc")){
get(...,envir=x)
}else {
eval(call('$',x[],substitute(...)))
}}
Справа @ Joshua, я подумаю о добавлении этих методов, но они могут противоречить дизайну самого класса - не технически, а более философски, если это имеет смысл. Теперь вы можете добавить свои собственные методы, чтобы делать то, что вы хотите. –
Однако [.mmap не отображается в пространстве имен по умолчанию, поэтому для '['. Нет? – aaronjg
@aaronjg: Методы не нужно экспортировать для регистрации. См. «? S3Methods» (в частности, последний абзац раздела «Подробности»). –