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