Используйте setNames()
вокруг data.frame
setNames(data.frame(matrix(c(1,2,3,4),nrow=2,ncol=2)), c("a","b"))
# a b
#1 1 3
#2 2 4
?setNames
:
функцию удобства, которая устанавливает имена для объекта и возвращает объект
blockquote>> setNames function (object = nm, nm) { names(object) <- nm object }
Я сделал это для программного обеспечения, которое я записал в прошлом, что это очень удобно. Я сделал это первым созданием Интерфейса, который должны были реализовать все мои 'сменные' классы. Я тогда использовал ClassLoder Java , чтобы загрузить те классы и создать экземпляры их.
Один путь, которым можно пойти об этом, является этим:
File dir = new File("put path to classes you want to load here");
URL loadPath = dir.toURI().toURL();
URL[] classUrl = new URL[]{loadPath};
ClassLoader cl = new URLClassLoader(classUrl);
Class loadedClass = cl.loadClass("classname"); // must be in package.class name format
, Который загрузил класс, теперь необходимо создать экземпляр его, брать имя интерфейса является MyModule:
MyModule modInstance = (MyModule)loadedClass.newInstance();
Изучите OSGi.
С одной стороны, OSGi обеспечивает все виды инфраструктуры для управления, запуска и выполнения большого количества других вещей с модульными компонентами программного обеспечения. С другой стороны, это могло меня слишком тяжелый для Ваших потребностей.
Кстати, Eclipse использует OSGi для управления его плагинами.
Я рекомендую внимательно изучить Поставщик услуг Java (SPI) API . Это обеспечивает простую систему для нахождения, что все классы всего Раздражают путь к классу, которые представляют себя как реализация конкретного сервиса. Я использовал его в прошлом со сменными системами с большим успехом.
Хотя я буду второй принятое решение, если основная сменная поддержка будет необходима (который имеет место большую часть времени), существует также Платформа Плагина Java (JPF), который, хотя испытывая недостаток в необходимой документации, является очень аккуратной сменной реализацией платформы.
Это легко развертываемо и - при проходе через classloading idiosynchrasies - очень легкий разработать с. Комментарий к вышеупомянутому должен знать, что плагин loadpaths ниже сменного каталога нужно назвать в честь полным путь к классу в дополнение к развертыванию его файлов класса в нормальном пути пакета, названном путем. Например,
plugins
`-com.my.package.plugins
`-com
`-my
`-package
`-plugins
|- Class1.class
`- Class2.class
При подходе classloader собственной разработки: В то время как определенно хороший способ узнать о classloaders существует что-то позвонившее "classloader ад", главным образом известный людям, которые боролись с ним когда дело доходит до использования в больших проектах. Конфликтующие классы легко представить и трудно решить.
И существует серьезное основание, почему затмение сделало перемещение к годы несколько OSGI назад. Так, если его больше тогда любимый проект, бросьте серьезный взгляд в OSGi. Который стоит посмотреть на. Вы узнаете о classloaders ПЛЮС появление technolgy стандарт.
Вы рассмотрели здание сверху Платформы Толстого клиента Eclipse и затем представление платформы расширения Eclipse?
кроме того, в зависимости от Ваших потребностей, Платформа Spring могла бы помочь с этим и другими вещами, которые Вы могли бы хотеть сделать: http://www.springframework.org/