私の作業ディレクトリにある既存のファイルの名前を、この名前の部分を使ってlink に変更したかったのです。Rでrename.fileを使用すると、既存のファイルの名前は変更されず、別の名前が作成されるのはなぜですか?
destination<-vector(length = length(files_names))
for (i in 1:length(files_names)){
files_names<-list.files(pattern = "*.csv", full.names = TRUE)
destination[i]<-substr(files_names[i],3, 8)
file.rename(files_names[i], paste(destination[i]))
}
しかし、その代わりに、それは私の作業ディレクトリ内の別のファイルを作成した名前を変更すると:これはこれは私が書いたコードでファイル名のリスト
> files_names
[1] "./AKLBNE_oneway_JobId427508.csv" "./AKLMEL_oneway_JobId427512.csv"
[3] "./AKLSYD.csv" "./AMSPEK_oneway_JobId427522.csv"
[5] "./ATXDXB_oneway_JobId427524.csv" "./AUHLHR_oneway_JobId427528.csv"
[7] "./BAHDXB_JobId427533.csv" "./BHMDXB_oneway_JobId427557.csv"
[9] "./BKKDOH_oneway_JobId427563.csv" "./BKKFRA_JobId427565.csv"
[11] "./BKKHKG_JobId427568.csv" "./BKKKIX_JobId427572.csv"
[13] "./BKKNRT_JobId427575.csv" "./BNEAKL_oneway_JobId427577.csv"
[15] "./BOMDXB_JobId427581.csv" "./BRUDXB_JobId427583.csv"
[17] "./CANLAX_JobId427585.csv" "./CANPVG_JobId427588.csv"
[19] "./CDGCUN_JobId427590.csv" "./CDGDXB_JobId427594.csv"
[21] "./CDGIAD_JobId427596.csv" "./CDGJFK_JobId427598.csv"
[23] "./CDGKUL_JobId427600.csv" "./CDGLHR_JobId427603.csv"
[25] "./CDGNRT_JobId427605.csv" "./CDGSFO_JobId427607.csv"
[27] "./CDGYUL_JobId427610.csv" "./CTUPEK_JobId427613.csv"
[29] "./SINCDG.csv"
です。何が問題ですか?
コードを実行することなく、ファイルが別のプロセスによって開かれた場合、そのようなことが起こります。 – rbm
あなたのforループの条件部分では、 'length(files_names)'を使用しますが、なぜforループ自体の中で 'files_names'を再定義しますか? – zyurnaidi
また、ループを目的に使用する必要はありません。 'file.rename(files_names、substr(files_names、3、8))'を試してください。 'substr'関数は大部分のファイルから' csv'拡張を取り除くことに注意してください。 – zyurnaidi