Я хотел бы построить структуру, которая для каждой записи хранит строку, индекс и числовое значение. Я хотел бы иметь доступ к числовому значению, запрашивая структуру данных либо с индексом, либо с строкой. Кроме того, структура данных небольшая (порядка 30 записей), но она должна быть доступна и изменена много раз (возможно, даже миллион раз). Обычно я просто использовал бы фрейм данных, но с учетом требований к эффективности, как вы думаете, будет лучше (быстрее)? Судя по синтаксису, у меня создалось впечатление, что для каждой операции (чтение или запись) необходимо получить доступ к my_struct
два раза: возможно, это не очень важно, но мне интересно, будут ли экспертные R-кодеры, когда эффективность является ограничением, будут использовать это код или что-то другое.Эффективная структура данных для хранения строки, целого и действительного числа для каждой записи
# define data structure
my_struct <- data.frame(index = c(3:14,24), variable = c("Pin", "Pout", "Tout", "D", "L", "mu", "R","K","c","omega","alpha","beta","gamma"), value = runif(13), stringsAsFactors = FALSE)
# examples of read/write statements
my_struct$value[my_struct$variable == "Pin"]
my_struct$value[my_struct$index %in% c(3:14)]
my_struct$value[my_struct$index %in% c(3,5)] <- rnorm(2)
Вы, вероятно, хотите 'data.frame (..., strAsAsFactors = FALSE)' там, если вам действительно нужна строка. – Frank
В любом случае, data.table поддерживает эффективную индексацию по нескольким индексам с бинарным поиском и красивым синтаксисом. См. Http://r-datatable.com. Одно замечание: оно не поддерживает вставку или удаление строк/записей. – Frank
@Frank получил его, спасибо за подсказку. Я определенно хочу настоящую строку, поэтому я исправил свой код соответственно. – DeltaIV