0

我有一个dataframe, 从文件中加载,例如

F[1] F[2] ... [F100000] <Output>
1 0 ... 1 6.25
1 1 ... 0 7.22
...(5000 rows)

我想将这些数据表示为从data.frame哪里data$inputs输入F[1]到哪里F[100000]以及data$output输出以dataframe这种方式使用:

randomForest(outputs~inputs,data=data)

但我无法将F输入分组到data$inputs

我写了一些函数,但看起来很糟糕:

loadDescriptors <-function(input){
  rd = read.csv(input, sep = " ", header =TRUE)
  rd <- rd[,colSums(is.na(rd))<nrow(rd)] #Delete empty columns
  na.omit(rd) #Delete Empty rows

}
getDescriptors <- function(data){
  return(grep("F",colnames(data), value=TRUE))
}
getFormula <- function(input){
  return(as.formula(paste("outputs ~ ", paste(getDescriptors(input), collapse="+"))))
}

补充:数据样本:

> d <- loadDescriptors("Test.stg")
> str(d)
'data.frame':   4316 obs. of  325 variables:
 $ F.0.    : int  2 1 0 0 0 0 0 0 0 0 ...
 $ F.1.    : int  0 1 0 0 0 0 0 1 0 0 ...
 $ F.2.    : int  0 0 1 0 0 0 0 0 0 0 ...
 $ F.3.    : int  0 0 1 1 0 0 0 0 1 0 ...
 $ F.4.    : int  0 0 1 0 0 0 0 0 0 0 ...
 $ F.5.    : int  0 0 1 0 0 0 0 0 0 0 ...
 $ F.6.    : int  0 0 1 0 0 0 0 0 0 0 ...
 $ F.7.    : int  0 0 1 0 0 0 0 0 0 0 ...
 $ F.8.    : int  0 0 1 0 0 0 0 0 0 0 ...
 $ F.9.    : int  0 0 1 0 0 0 1 0 0 0 ...
 $ F.10.   : int  0 0 0 1 0 0 0 0 0 0 ...
...
 $ F.98.   : int  0 0 0 0 0 0 0 0 0 0 ...
  [list output truncated]

输出是:

> str(d$Activity)
 int [1:4316] 1 0 0 0 0 1 0 1 0 0 ...

我可以参考任何领域,data.frame例如:

> str(d$F.2.)
 int [1:4316] 0 0 1 0 0 0 0 0 0 0 ...

但是我想将所有输入分组以引用输入,data$input我该怎么做?

4

1 回答 1

0

我不确定我是否理解你想要的,但如果我理解了,以下应该会有所帮助:

inputs <- dataframe[-length(dataframe)]
outputs <- dataframe[length(dataframe)]
于 2013-10-16T15:46:50.933 回答