ここでの入力のおかげで、require(plyr) ソリューションも作成しました。
両方のソリューションよりもエレガントではありませんが、何らかの理由で、plyr ソリューションを読む方が簡単だと思います。
単一のダミー変数を生成できる関数を作成する
single.value.to.dummy<-function(value.name, list.of.lists){
ldply(.data=list.of.lists,
function(list.element){ dummy<-value.name %in% list.element
names(dummy)<-value.name
return(dummy)
})}
この関数をリストのリスト内のすべての一意の値に適用します
list.of.lists.to.dummy<-function(list.of.lists){
#Extract unique values
value.names<-unique(unlist(list.of.lists))
dummy.frame<-llply(.data=value.names,
function(value.name){
dummy<-single.value.to.dummy(value.name, list.of.lists)
return(dummy)})
return(data.frame(dummy.frame))
}
example<-cbind(example, list.of.lists.to.dummy(example$value))
groups value T S P O U A C B N V D H Y F
1 a T, S, P, O TRUE TRUE TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
2 b U, A, C, B FALSE FALSE FALSE FALSE TRUE TRUE TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE
3 c S, N, V, D FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE TRUE TRUE TRUE FALSE FALSE FALSE
4 d H, Y, F, X FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE TRUE TRUE
5 e M, Y, O, X FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE
6 f Y, A, K, S FALSE TRUE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE