2017-08-09 12 views
0

データセットから変数yの加算値、最大値、平均値を最大値xで抽出しました。データフレームとバインドリストをマージ

xの値は最大でyです。

これらの値をcbind機能を使用してプールしました。私は私がunlist機能を試してみましたが、didn'tは私にsatistafctoryデータを与え、データフレームを使用してこのリストをmergeしたいのですが、また

error:Error in sort.list(bx[m$xi]) : 'x' must be atomic for 'sort.list' 
Have you called 'sort' on a list? 

を得ました。ここで

は、私が使用していますコードです:

ここ
AUC<-lapply(split(data_example, data_example$class), function(d) sum(d$y)) 
max.y<-lapply(split(data_example, data_example$class), function(d) max(d$y)) 
max.x<-lapply(split(data_example, data_example$class), function(d) max(d$x)) 
auc.mean<-lapply(split(data_example, data_example$class), function(d) mean(d$y)) 
x.ymax<-lapply(split(data_example, data_example$class), function(d) 
d$x[which.max(d$y)]) 

data1<-cbind(AUC,max.y,max.x, auc.mean, x.ymax) 

datafinal<-merge(data1, data_merge, by="class") 

私は例を再現するためのデータをアップロード:

http://www.filedropper.com/dataexample_1 http://www.filedropper.com/datamerge

+0

。おそらく 'data1 < - data.frame(AUC = unlist(AUC)、max.y = unlist(max.y)、max.x = unlist(max.x)、auc.mean = unlist(auc.mean) 、x.ymax = unlist(x.ymax)、class = names(AUC)) ' – akrun

+0

これは完璧に機能しました。どうもありがとう! – Calfiao

+0

ありがとう、私は解決策として私のコメントを掲載した – akrun

答えて

0

のでcbindが機能しなかった理由は、オブジェクトはlistです。 sapplylapplyを交換し

1)これは

AUC <- sapply(split(data_example$y, data_example$class), sum) 
他の例について

と同様にして、cbind OPののようにvector出力を得るために修正する方法はいくつかあります。 Infactは、それが単一lapply/sapplyすぎ

2で行うことができます)オブジェクトはlistのあるように、我々はあなたがcbind`リスト要素 `しようとしていることをunlist、その後cbind

data1 <- data.frame(AUC = unlist(AUC),max.y = unlist(max.y), 
    max.x = unlist(max.x), auc.mean = unlist(auc.mean), 
    x.ymax = unlist(x.ymax), class = names(AUC)) 
関連する問題