2016-06-23 12 views
0

私はさまざまなデータフレームを持っており、それぞれに同じカスタム関数を実行したい。私は、リストではなく元のデータフレーム名のそれぞれに出力を戻したい。複数のデータフレームに同じカスタム関数を適用する(リストではなくデータフレームとして返す)

mtcars1、mtcars2、mtcars3 ..... mtcars20:

のは、私は別のデータフレームの束を持っているとしましょう。これらのそれぞれは、CYL列で異なる因子レベルを持ちます。

  • はmpgファイルの移動平均であるいくつかの新しい列を計算as.numeric(as.character()) -

    1. が要因から数にCYL値を返します。私は、関数を実行します。

    これを実行してこの機能を適用するコードは何ですか?もう一度、出力をすべてmtcars1 ... mtcars20データフレームにします。

    私は

    lapply(mylist=c(mtars1...mtcars20) function(x) myfunct()) 
    

    を見て試してみましたが、私はトラブルに実行しています。

  • +0

    これは必死にdata.framesのリストにする必要があります。 'lapply(list(mtcars1、mtcars2、...)、myfunct)'は動作しませんか? – r2evans

    +0

    私はそれを試みましたが、多分私の構文が間違っていました。簡単な例として、私の関数はCYL列を因子値から数値に変換したいだけです。どうすればいい?私はこれに苦労して過ごしたが、それがうまく動かないので、他の方法があると思ったか、間違ったアプローチをしていましたか? – runningbirds

    +0

    [data.framesのリストを使って作業する](http://stackoverflow.com/questions/17499013/how-do-i-make-a-list-of-data-frames)の次の記事を参照してください。グレゴールの答えは、そのようなオブジェクトを扱う方法に関する素晴らしいヒントがたくさんあります。他のものの中には、data.framesをリストに入れる方法があります。 – lmo

    答えて

    0
    ## generate data 
    for (i in 1:5) assign(paste0('mtcars',i),transform(mtcars,cyl=factor(cyl+10^i))); 
    
    ## collect loose data.frames into one list, and remove the originals 
    nms <- ls(pattern='^mtcars\\d+$'); 
    dfs <- mget(nms); 
    rm(list=nms); 
    
    ## solution 
    library(zoo); ## for rollmean() 
    for (i in seq_along(dfs)) { 
        dfs[[i]]$cyl <- as.numeric(as.character(dfs[[i]]$cyl)); 
        dfs[[i]]$some.new.column <- rollmean(dfs[[i]]$mpg,5L,fill=NA); 
    }; ## end for 
    
    0

    は、まだデータ・フレームのリストを返すためにlapply()関数を使用することができます。

    dfs <- rep(list(mtcars), 4) #list of data frames 
    
    dfs <- lapply(dfs, function(x) { 
           names(x)[1] <- "m_p_g" 
           x}) 
    lapply(dfs, head, 2) 
    # [[1]] 
    #    m_p_g cyl disp hp drat wt qsec vs am gear carb 
    # Mazda RX4  21 6 160 110 3.9 2.620 16.46 0 1 4 4 
    # Mazda RX4 Wag 21 6 160 110 3.9 2.875 17.02 0 1 4 4 
    
    # [[2]] 
    #    m_p_g cyl disp hp drat wt qsec vs am gear carb 
    # Mazda RX4  21 6 160 110 3.9 2.620 16.46 0 1 4 4 
    # Mazda RX4 Wag 21 6 160 110 3.9 2.875 17.02 0 1 4 4 
    
    # [[3]] 
    #    m_p_g cyl disp hp drat wt qsec vs am gear carb 
    # Mazda RX4  21 6 160 110 3.9 2.620 16.46 0 1 4 4 
    # Mazda RX4 Wag 21 6 160 110 3.9 2.875 17.02 0 1 4 4 
    
    # [[4]] 
    #    m_p_g cyl disp hp drat wt qsec vs am gear carb 
    # Mazda RX4  21 6 160 110 3.9 2.620 16.46 0 1 4 4 
    # Mazda RX4 Wag 21 6 160 110 3.9 2.875 17.02 0 1 4 4 
    
    関連する問題