Это неприятно. Так я обычно делаю это, чтобы не загружать другие пакеты:
levels(subdf$letters)<-c("a","b","c",NA,NA)
, который получает вас:
> subdf$letters
[1] a b c
Levels: a b c
Обратите внимание, что новые уровни заменят все, что занимает их индекс в старые значения (subdf $ letters), поэтому что-то вроде:
levels(subdf$letters)<-c(NA,"a","c",NA,"b")
не будет работать.
Это, очевидно, не идеально, когда у вас много уровней, но для Несколько, это быстро и легко.
Спасибо за красивое обобщение всех возможностей в одном месте.
Однако здесь отсутствует одна техника. Это MapReduce-Hadoop. Если возможно вписать проблему в парадигму MapReduce, это, пожалуй, наиболее широко доступное решение. Мне также интересно, можно ли распространить паттерн Actor Framework (JetLang, Kilim и т. Д.) На кластер.
Не забывайте Erlang Mnesia .
Mnesia дает вам такие вещи, как транзакции, к которым вы привыкли в обычной БД, но обеспечивает операции в реальном времени и Отказоустойчивость. Кроме того, вы можете перенастроить вещи без простоев. Обратной стороной является то, что это резидентная база данных в памяти, поэтому вам придется фрагментировать действительно большие таблицы. Максимальный размер таблицы - 4 ГБ.
Может быть, эти слайды будут вам полезны. Исходя из нашего опыта, я бы порекомендовал Oracle (Tangosol) Coherence и GigaSpaces как наиболее мощные фреймворки для распределения данных и обработки. В зависимости от конкретной проблемы, один из них может светиться. Терракота тоже вполне применима для некоторых задач.
Думал, что нашел отличную платформу кластеризации / распределения Java, хотел снова открыть эту-
Checkout http://www.hazelcast.com
Я запустил тестовые программы, это очень круто, очень легкий и простой в использовании. Он автоматически обнаруживает членов кластера в одноранговой конфигурации. Возможности безграничны.