2017-01-12 9 views
1

私はnames(table(data))を使って、data.frameのサブセットにフィルタを適用する変数のリストを生成しますが、data.frameの名前を保存するための一意の値を生成する方法はわかりません。私はユニークな値を生成していますどのようにこれはテーブルからの名前に基づいてフィルタリングされたdata.framesを作成する方法は?

Type <- c("A","A","A","A","A","A","A","A","A", 
     "B","B","B","B","B","B","B","B", 
     "C","C","C","C","C","C","C", 
     "AB","AB","AB","AB","AB") 
Type <- as.data.frame(Type) 

私がしたい:私は「どのように考えるか次に

library(dplyr) 
NamedTypes <- function(data, nametype) { 
    data %>% 
    filter(Type == nametype) %>% 
    a <- paste0(nametype, "_type") 
} 

type_names <- names(table(droplevels(Type$Type))) 

これは私ではない、かなり-あっ機能ですd関数を実行します。

lapply(type_names, function(x) NamedTypes(Type, x)) 
+0

にデータフレームを割り当てるためのリストを作成する、およびlist2envあなたが期待される出力を表示することができますか? – count

+0

出力は、それぞれ元のdata.frameのレベルに名前が付けられたフィルタリングされたdata.framesになります。この例では、A_type、B_type、C_type、AB_typeという名前のフィルタリングされたdata.framesがあります。 – SCDCE

+0

あなたは 'split(Type、Type $ Type)'を意味しますか? – Sotos

答えて

4

01あなたの地球環境

list2env(split(Type, Type$Type), globalenv()) 
+0

優雅さとベクトル化に投票しました。 –

+1

これは素晴らしいことです。私の唯一の追加:list2env(split(type、droplevels(Type $ Type))、globalenv()) – SCDCE

+0

'list2env'は一般的に非常に悪い習慣です。リストに入れておくほうがいいよ –

関連する問題