リストに基づいてデータフレームをフィルタリングし、次にそのフィルターに基づいて各データフレームを保存します。関数またはforループを作成する方法はありますか?

theduker

データセット内のさまざまなカテゴリでトピックモデリングを行っています。その前に、データをカテゴリに基づいてさまざまなデータフレームに分割し、それぞれをドキュメント用語マトリックスにキャストできるようにする必要があります。私がforループについて知っている小さなことから、私は次のことを知っています。私が行き詰まっている部分は、リスト内の各アイテムの出力が必要なことです。


category = c("a",
         "b",
         "c",
         "d",
         "e",
         "f",
         "g",
         "h",
         "i",
         "j")

for (i in category) {

#Subset to test topic model
someDataFrame = anotherDataFrame %>%
  filter(colVariable == i) %>% #here is the column of interest in the dataframe
  select(ID, Word) %>%
  group_by(ID, Word) %>%
  count()

newDataFrame_i = someDataFrame %>% #here's where I'd like to export to individual dataframes
  cast_dtm(ID, Word, n) #in order to do topic modeling, you have to build a document-term matrix 


}

前に言ったように、リスト内の各アイテムのデータフレームを期待していますが、取得し続けError in (function (cl, name, valueClass) : assignment of an object of class “numeric” is not valid for @‘Dim’ in an object of class “dgTMatrix”; is(value, "integer") is not TRUEます。

1つの値(ハードコードされた「a」など)を使用してこれを実行し、探している結果が得られるので、forループがオフになっていることがわかります。

解決:

filter_and_cast <- function(df, category){
  df %>%
  filter(colVariable == i) %>% #here is the column of interest in the dataframe
  select(ID, Word) %>%
  group_by(ID, Word) %>%
  count() %>%
  ungroup() %>%
  cast_dm(ID, Word, n)
}

for (i in category) {
  cast = paste("filterCast", i, sep = "_")
  try(assign(cast, filter_and_cast(aDataFrame, i)))
}

寄稿者のおかげで、ようやく問題を解決することができました。

オーランドサボガル

名前と値を渡すオブジェクトの作成を可能にするassign()関数を使用して問題を解決できると思います

何かのようなもの:

ObjectName = paste(("newDataFrame", i, sep = "_")
assign(ObjectName, newDataFrame_i)

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ