Вы должны думать о табличных объектах как о матрицах, из которых 2D наследуют все свои свойства индексирования (так что [ dim-indices ]
):
is.matrix(tab) # returns TRUE
Если у вас есть таблица больше 2d, она будет естественно наследуют его функции доступа от класса массива. Единственным (типичным) классом данных, который использует «$» в качестве доступа, является список (из которого наследуются наборы данных). Попробуйте:
tab[ , 1] # Or
tab[ , "Cleveland"]
(я полагаю, я не был бы так категоричен в отношении «$». Вы можете получить доступ к элементам некоторых объектов языка и объектов среды с помощью этого аксессора, поскольку они ведут себя как списки.)
Есть ли какой-нибудь способ?
Я не знаю специально для sqlite API, но обычно поддерживает обратные вызовы c-style, чтобы иметь данные пользователя, переданные из указателя
void*
(я бы угадал 1-й параметр указанной вами сигнатуры). Что обычно делает:
- Объявить статическую функцию класса для указания в качестве функции функции обратного вызова
- Реализовать эту функцию для передачи переданного указателя данных пользователя указателю на ваш класс экземпляр и вызов функции-члена
- Определите функцию-член, определенную в классе, который обеспечивает реализацию, которую вы хотите
- Передайте указатель на экземпляр класса обработки, когда вы собираетесь регистрировать указатель функции статического члена с C API
Надеюсь, это указывает на правильное направление.