2017-06-14 90 views
0

當我計算行意味着列表中的每個數據集時,我希望這個新變量的名稱(avg)對於列表中的每個元素都不相同,例如類似avg_df1,avg_df2,或者它佔用數據集名稱的一部分並將其聲明爲變量名稱。可以通過使用「粘貼」功能來完成嗎?在R中的多個數據框中命名變量

list = list(df1, df2) 

list = lapply(list, function(x){ 
    x$avg = rowMeans(x[,-2])     
    x 
}) 
+0

請提供[重複的例子(https://stackoverflow.com/questions/5963269/how-to-make-a-great- r-reproducible-example) – Val

回答

0

如果您的輸入列表被命名爲:

> input <- list(df1 = head(mtcars), df2 = tail(mtcars)) 
> sapply(input, function(x) rowMeans(x[, -2])) 
        df1  df2 
Mazda RX4   32.2980 26.8570 
Mazda RX4 Wag  32.3795 26.9683 
Datsun 710  25.5580 66.2690 
Hornet 4 Drive 42.0135 37.3590 
Hornet Sportabout 58.2310 68.6710 
Valiant   37.9540 28.4890 
+0

謝謝!有用。它給了我行的手段,但前兩列消失,當我保存結果:data = sapply(input,function(x)rowMeans(x [, - 2]))。在我的數據集中,前兩列提供座標。我怎樣才能做到這一點,同時保持第一列。 – Anton

+0

只需將cols與'cbind(original_data,rowMean_Data)':'cbind(head(mtcars [,1:2]),sapply(input,function(x)rowMeans(x [,-2])))' – shosaco