求助各位大牛:怎么样在数据框下,在自定义的列上取自定义的值,筛选数据框?
例如:
数据框 aa<- data.frame(x=c(1,2,3,4,5),sort=c("a","b","a","a","b"))
> aa
x sort
1 1 a
2 2 b
3 3 a
4 4 a
5 5 b
定义一个函数gets:可以在数据框中,在特定的列下,取出特定的值,筛选出数据框:
> gets<- function(mydata,label,value) # mydata是原始数据框,label是原始数据框中我要计算的特定列名,value是特定列名下的特定值
+ {
+ mysorts<- as.vector( unique( mydata[c( label )]))
+ n_sorts<- as.integer( length( mysorts))
+ sub<- sapply(1:n_sorts,function( i )
+ {
+ sub<- mydata[which(mydata[c( label )]==mysorts[ i ]),c(value)]
+ })
+ }
运行gets():
> gets(aa,"sort","x")
然后就报错:
Error in Ops.data.frame(mydata[c(label)], mysorts[i]) :
== only defined for equally-sized data frames
求大牛指教!!谢啦!!
|