リストの各要素に新しい列を追加する際に、これらのファイルの変更された名前を含む問題があります。これまでのところ、私はsubstr
のファイル名列を作成することができましたが、その一方で、この列に新しい文字列を追加することはできませんでした。ファイルリストのファイル名を変更して新しい列として追加する
ここに私の再現性の試みがある、唯一の作業ディレクトリに.txtファイルを生成するための
この部分!
writeFiles <- function(n, maxRows=10){
lapply(seq(10,90,10),function(x) write.table(sample(sample(maxRows)[1],replace=F),paste(x,'.txt',sep=""), quote=FALSE, col.names = FALSE,row.names=FALSE))
}
writeFiles(9,10)
filesToProcess <- dir(pattern = "*\\.txt")
"10.txt" "20.txt" "30.txt" "40.txt" "50.txt" "60.txt" "70.txt" "80.txt" "90.txt"
次のステップでは、私はこのファイルを読み込み、ファイル名にのみ.txtファイルの最初の文字を取る列を変更します。
data.list <- lapply(filesToProcess,function(x){
tmp <- read.table(file=x, header = F,fill=T, comment.char='*')
# tmp$filenames <- paste0(substr(x,1,1),c("best","worst"),sep="")
tmp$filenames <- substr(x,1,1)
return(tmp)
})
data.list
[[1]]
V1 filenames
1 4 1
2 3 1
3 7 1
4 8 1
5 1 1
6 2 1
7 6 1
8 5 1
[[2]]
V1 filenames
1 4 2
2 1 2
3 5 2
4 3 2
5 2 2
6 6 2
7 7 2
[[3]]
V1 filenames
1 1 3
2 3 3
3 2 3
など
実際、私もfilenames
列に新たな文字列にしたいと私はlapply
の内側に貼り付けコマンドを試してみました、
data.list <- lapply(filesToProcess,function(x){
tmp <- read.table(file=x, header = F,fill=T, comment.char='*')
tmp$filenames <- paste0(rep(c("best","worst"),c(4,5)),substr(x,1,1),sep="")
return(tmp)
})
エラー$<-.data.frame
(*tmp*
、 "ファイル名" で、値= c( "best1"、# "best1":置換は9行、データは8
したがって最初の4つの.tx tファイルは最善とマークされ、残りの5ファイルは最悪の.txtファイルです。
lapply
の内部ではどうすればいいですか?
ありがとうございます。私たちはループ外に出ることなくこれを行うことができますか?私が提案するように。 – Alexander
@Alexanderコードを修正しました。動作していることを確認してください。 – akrun
こんにちは。ありがとう。常に完璧な作品:) – Alexander