Rで作業しています。私は製品名、年をとり、データベースからさまざまな記述子を含むデータフレームを吐き出す関数を持っています。私は関数を渡したい:引数のすべての順列を関数に適用して1つのデータフレームを作成します
Product <- c("A","B")
Year <- c("2015","2016")
そして、それは単一のデータフレームを返すこれらの引数のすべての順列を計算するためです。私はmapplyとrbindを使ってみましたが、それはすべて乱雑です。何かアドバイス?
Rで作業しています。私は製品名、年をとり、データベースからさまざまな記述子を含むデータフレームを吐き出す関数を持っています。私は関数を渡したい:引数のすべての順列を関数に適用して1つのデータフレームを作成します
Product <- c("A","B")
Year <- c("2015","2016")
そして、それは単一のデータフレームを返すこれらの引数のすべての順列を計算するためです。私はmapplyとrbindを使ってみましたが、それはすべて乱雑です。何かアドバイス?
あなたは、tidyrからpurrrからpmap
をcrossing
の組み合わせを使用し、tidyrからunnest
ことができます。
library(tidyr)
library(purrr)
crossings <- crossing(Product, Year)
crossings$result <- pmap(crossings, find_product_sales)
crossings <- unnest(crossings, result)
これはfind_product_sales
機能は、製品と年を取ること、あなたがコメントで説明するように、想定していますデータフレームを返します。
(crossing
の代わりにexpand.grid
を使用できますが、おそらくstringsAsFactors = FALSE
も追加することをお勧めします)。
まず、引数のリストに分割次に、あなたの引数
params <- expand.grid(Product=Product, Year=Year, stringsAsFactors = F)
の順列を作成
params <- split(params, seq.int(nrow(params)))
製品と年最後
my_func <- function(Product, Year) {
sprintf("Product: %s, Year: %s", Product, Year)
}
を取る機能を持っています、パラメータをループして関数を適用する
lapply(params, function(x) do.call(my_func, x))
'expand.grid(Product、Year)' – Zelazny7
おはようございます。 Rは機能に組み込まれていると驚いています。今私はそれを私の機能にどのように適用するのですか? – user79928
あなたの機能は何か分かりませんか?あなたはあなたの引数の順列のdata.frameを返す関数が必要だと述べています。 'f
Zelazny7