R data.frame,将一些输入分组为“data $ inputs”

时间:2013-10-16 15:35:00

标签: r

我有一个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,我该怎么做?

1 个答案:

答案 0 :(得分:0)

我目前还不确定我是否理解你想要的东西,但如果我这样做,以下内容应该有所帮助:

inputs <- dataframe[-length(dataframe)]
outputs <- dataframe[length(dataframe)]