私は簡単な例を使って私の質問を説明するのが簡単だと思います。関数の出力を再帰的に出力する方法は、自動的にRの同じ関数の入力となりますか?
Name <- c("A1", "A2")
A <- data.frame(Name)
Name <- c("A11", "A12")
A1 <- data.frame(Name)
Name <- c("A21", "A22")
A2 <- data.frame(Name)
crawl_F <- function(x) {
return(x[,1])
}
crawl_F(A)
この例では、crawl_F(A)はA1、A2となります。しかし、私は、crawl_F(A)がcrawl_F(A)を1回呼び出すだけで、A1、A2、A11、A12、A21、A22という結果になることを理解したい。さもなければ、私はA11、A12、A21、A22を得るために関数をA1とA2に手動で適用しなければならない。
このような単純なケースでは、関数の手動適用は大きな問題ではありませんが、Aに多くの値が含まれ、後続の各値にも多くの値がある場合、そのような手動による適用には膨大な時間と非効率がかかります。
私は再帰関数を使うことを考えましたが、この問題の再帰を書く方法を考え出していません。この問題を解決するために再帰を使用するかどうかにかかわらず、任意のアイデアですか?
crall <- apply(do.call(rbind, list(A, A1, A2)), 1, function(x) { append(crall, x) })
がヒント@Rolandため、do.callでrbind呼び出すことで感謝を単一DF内のすべてのDFSを組み合わせる:uは次のようにウル所望の出力ベクトルを得ることができます与え例えば
これは潜在的に無限ループに入っています。あなたの終了条件は何ですか?私はそれがこれらの3つだけではないと仮定しています。そして、あなたは 'A21'、' A22'のようなデータフレームをたくさん持っています。 – Aramis7d