1

によって識別される車両を分析する必要がありますID。この分析の結果には、、、および情報が含まnumericfactorますlogical。分析で使用されるすべてのデータは 1 つのデータ フレームにあるため、関数は次のようになります。

Results <- by(Data, Data$ID, Function)

WhereFunctionは、次のような出力を提供するように設計されています。

Function <- function(DF) {
                          ## Do stuff...
                          return(c(23.2, as.factor("SuperFast"), TRUE))
                         }

これまでのところ、このアプローチの優れている点は、非常に高速であることに加えて (forループに数時間かかったところを約 1 分かかる)、次の方法で簡単にdata.frameフォーマットできることです。

as.data.frame(do.call("rbind", Results))

しかしもちろん、すべてcを強制的に同じオブジェクト型にします。これを解決するために、文字ベクトルを吐き出すようにしました (最後にオブジェクトの種類を手動で変更するなど)。Function "rbind"do.callFunctionas.character(23.2, "SuperFast", TRUE)

row(1)異なるオブジェクト タイプを持つデータフレームにあるものを返す方法、または (2) byand c(行の場合) を使用するよりも優れた方法はありますか?

キックのために、データに使用できるものを次に示します。

Data <- data.frame(ID=c(1,2,2,3))
4

1 に答える 1

4

関数からベクトルの代わりにデータ フレームを返すだけです。

Function <- function(DF) {
    ## Do stuff...
    return(data.frame(a = 23.2,b = as.factor("SuperFast"),c = TRUE))
}

余談ですが、すべてを同じデータ型に強制する唯一のものはc. rbind渡すデータフレームがすべて揃っていると仮定して、(ほとんど)タイプを保持するデータフレームメソッドがあります。

于 2012-12-14T22:36:12.060 に答える