我有一个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
,我该怎么做?
答案 0 :(得分:0)
我目前还不确定我是否理解你想要的东西,但如果我这样做,以下内容应该有所帮助:
inputs <- dataframe[-length(dataframe)]
outputs <- dataframe[length(dataframe)]