2017-08-10 26 views
1

複数のデータフレームがあり、それぞれのデータフレーム内の同じ名前の列に同じアクションを適用したいと考えています。複数のデータフレームをRに適用

forループを実行して複数のCSVを読み込んでデータフレームを作成することはできましたが、forループがデータフレーム内の同じ列にまたがってstr_padを使用するようにはできませんでした。例えば

、私が持っている:

a$ARTICLE_NUMBER <- str_pad(a$ARTICLE_NUMBER, 11, pad = 0) 
b$ARTICLE_NUMBER <- str_pad(b$ARTICLE_NUMBER, 11, pad = 0) 
c$ARTICLE_NUMBER <- str_pad(c$ARTICLE_NUMBER, 11, pad = 0) 

私が試した:

vendor_list <- c("a", "b", "c") 

for(i in vendor_list){ 
    i[ARTICLE_NUMBER] <- str_pad(i[ARTICLE_NUMBER], width = 11, pad = 0) 
} 

と同様に:また

lapply(vendor_list, function(x){ 
    x[ARTICLE_NUMBER] <- str_pad(x[ARTICLE_NUMBER], width = 11, pad = 0) 
    return(x) 
}) 

string_pad <- function(x){ 
    x[ARTICLE_NUMBER] <- str_pad(x[ARTICLE_NUMBER], width = 11, pad = 0) 
} 

vendor_list <- lapply(vendor_list, string_pad(x) x[, 1]) 

私には何が欠けているのか分かりません。どんな助けでも大歓迎です!私は主な問題は、あなたがdata.frameの列に対処された荘園だった、あなたの最初の試みは、このような何かのために働くと思う

+1

[:私は結果を得る上記のコードから

a=b=c=list()# Just ensure they are lists lapply(list(a=a,b=b,c=c),function(x) {x$ARTICLE_NUMBER= "TYPE FUNCTION HERE";x}) 

:私はあなたのデータがどのように見えるかわからないので、私はあなたの簡単なバージョンここ

はあなたの変数を定義しますなぜそれらをリストに入れるべきかについて素敵な答えがあります。](https://stackoverflow.com/a/24376207/4497050) – alistaire

+0

@alistaireリンクをありがとう。良い読書。 – TUSHAr

+0

ありがとう@alistaire、私は投げに行き、これを読んでそれに応じて調整します。これらのデータフレームには他にもたくさんのアクションがありますので、dfsを結合してxlsファイルに書き込むときに最後に分けて分割することができます。 – user2299914

答えて

1

:いずれの場合も

i[['ARTICLE_NUMBER']] <- str_pad(i[['ARTICLE_NUMBER']], width = 11, pad = 0) 

、私は別のアプローチをお勧めします。 data.frameの上でこのような 操作は、私がここにあるいくつかのいくつかのエラーを参照してくださいあなたがリストに3つのデータ・フレームを追加し、lapply():

df_list <- list(a, b, c) 
lapply(df_list, function(x) { 
    x[["ARTICLE_NUMBER"]] <- str_pad(x[["ARTICLE_NUMBER"]], 11, pad = 0) 
}) 
+0

あなたの応答@jameselmoreありがとう、私は非常に突然変異に精通していますが、このアプリケーションでは考えていませんでした。私はまだこれを正常に動作させることができませんでしたが、明日は努力し続け、私がすればあなたに知らせます。再度、感謝します! – user2299914

1

にはるかに簡単です:関数str_padに引数として渡す必要があるa$ARTICLE_NUMBERは何ですか? forループ/ lapply機能の実行中にすでに存在していますか?もしそうなら、lapply/forループ関数を書かなければなりません。

$a 
$a$ARTICLE_NUMBER 
[1] "TYPE FUNCTION HERE" 


$b 
$b$ARTICLE_NUMBER 
[1] "TYPE FUNCTION HERE" 


$c 
$c$ARTICLE_NUMBER 
[1] "TYPE FUNCTION HERE" 
+0

お返事ありがとうございます。私は[]に変換した '$'記号のためにこれを動作させることができませんでしたが、それでもかなりうまく動作することができませんでした。 – user2299914

+0

私は最初の答えがうまくいかなければならないと思います。私のアップデートでもう一度試してみることはできますか? –

+0

ティムに感謝します。私はちょうど試しましたが、x [["ARTICLE_NUMBER"]]のエラーを受け取りました:添字の範囲外のエラー " – user2299914

1

を使用することができますdplyrパッケージ

library(dplyr) 

vendor_list <- list(a, b, c) 
pad_article_num <- 
    function(df) { 
     mutate(df, ARTICLE_NUMBER = str_pad(ARTICLE_NUMBER, width = 11, pad = 0) 
    } 
vendor_list <- lapply(vendor_list, pad_article_num) 
関連する問題