У меня есть отношения родитель / потомок через нашу таблицу пользователей с моделями как таковыми:
class User < ActiveRecord::Base
# Parents relationship
has_many :children_parents, :class_name => "ParentsChild", :foreign_key => "child_id", :dependent => :destroy
has_many :parents, :through => :children_parents
# Children relatiopnship
has_many :parents_children, :class_name => "ParentsChild", :foreign_key => "parent_id", :dependent => :destroy
has_many :children, :through => :parents_children
...
end
И в parent_child.rb:
class ParentsChild < ActiveRecord::Base
belongs_to :parent, :class_name => "User"
belongs_to :child, :class_name => "User"
end
Прямо сейчас это возможно в нашей форме «добавить потомков» (просто используя вложенные ванили атрибуты), чтобы несколько раз добавить одного и того же пользователя в качестве дочернего для родителей. Я не уверен, какой «правильный» способ добиться уникальности в отношениях ParentsChild, хотя я склоняюсь к уникальному индексу на (parent_id, child_id)
на уровне базы данных (конечно, с использованием миграции ).
Я уверен, что мог бы также установить ограничения уникальности в методе UsersController :: update, но предпочел бы избегать изменения этого кода (прямо сейчас он вообще не ссылается на родителей / детей, благодаря вложенным атрибутам в форма / модель), если возможно. Меня больше всего беспокоит использование символа " - function (v, q) {...
я хочу назначить факторы, представляющие квантили. Таким образом, мне нужно, чтобы они были числовыми. - function (v, q) {...
я хочу назначить факторы, представляющие квантили. Таким образом, мне нужно, чтобы они были числовыми. Вот почему я написал следующую функцию, которая по сути является ответом на мою проблему:
qdum <- function(v,q){
qd = quantile(v,1:(q)/q)
v = as.data.frame(v)
v$b = 0
names(v) <- c("a","b")
i=1
for (i in 1:q){
if(i == 1)
v$b[ v$a < qd[1]] = 1
else
v$b[v$a > qd[i-1] & v$a <= qd[i]] = i
}
all = list(qd,v)
return(all)
}
теперь вы можете смеяться :). Возвращенный список содержит переменную, которую можно использовать для присвоения каждому наблюдению соответствующего квантиля. У меня вопрос: есть ли способ лучше (более «родной» или «основной») сделать это? Я знаю о программе Quantcut (из пакета gtools), но, по крайней мере, с теми параметрами, которые я получил, у меня остались только эти неудобные (? - по крайней мере, для меня) пороги.
Приветствуются любые отзывы, которые помогают стать лучше!