1

我需要对他们识别的车辆进行一些分析ID。此分析的结果将包括一些numericfactorlogical信息。分析中使用的所有数据都在一个数据框中,因此函数如下所示:

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))

但是,当然,cinFunction "rbind"indo.call将所有内容强制转换为相同的对象类型。为了解决这个问题,我一直在Function吐出一个字符向量(比如as.character(23.2, "SuperFast", TRUE)最后手动更改对象类型。

是否有(1)一种方法可以row在具有不同对象类型的数据框中返回一些东西,或者(2)比使用byc(对于行)更好的方法?

只是为了好玩,这里有一些可用于数据的东西:

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 回答