R言語におけるループでの複数のファイルの入力および処理
たびたび初歩的な質問で申し訳ありません。
下記質問では大変お世話になりました。
R言語におけるデータフレームから欠損値を除去する方法、欠損値しかない列の除去(もしくは0への変換)
現在、csv作成→Rへ入力→Mann-whitney計算→csv出力を、様々なご指導を元に下記にように実行しています。
Data <- read.csv("sample.csv", header=TRUE)
Data_long <- gather(Data, key = fac, value = value, factor_key = TRUE)
Data_long_rmNA <- drop_na(Data_long, value)
temp <- with(Data_long_rmNA, pairwise.wilcox.test(value, fac, exact = FALSE, p.adjust.method = "none"))$p.value
write.csv(temp, file = "sample_result.csv", quote = F)
現状、満足していますが、入力するcsvファイルがたくさんあるため、sampleのところにいちいち名前を入力するのが面倒なため、下記にようにしてみました。
i <- "sample"
Data <- read.csv(sprintf("%s.csv", i), header=TRUE)
Data_long <- gather(Data, key = fac, value = value, factor_key = TRUE)
Data_long_rmNA <- drop_na(Data_long, value)
temp <- with(Data_long_rmNA, pairwise.wilcox.test(value, fac, exact = FALSE, p.adjust.method = "none"))$p.value
write.csv(temp, file = sprintf("%s_result.csv", i), quote = F)
ところで、さらにこれを自動化することはできないでしょうか?For文で書けばできるのではと思っています。しかし、入力するcsvファイルの名前が規則性がないもので、困っています。たぶんファイル名が1, 2, 3...とかならFor文でできそうなのですが。。。
例えば、ファイル名が、A4fg, Brtg, Huji, CVYh...とあった場合に、
Data <- (A4fg, Brtg, Huji, CVYh...)
のようなコードを最初に入れて、これを順々に実行していく、というコードを書きたいと考えています。もちろん出力時はそのファイル名_result.csvとして出力できれば、助かります。
ご指導のほど、よろしくお願いいたします。