2015-11-13 4 views
-1

Похоже, что нет опции row.names=file.names[i], когда я использую функцию write.table. Например, предположим, в папке Я 3 файла с именем «file_1», «file_2», и «file_3», то в выходном файле csv, я хотел бы видеть следующие результаты:R для записи строки цикла row.names = имена файлов?

"","keyword","totalword" 
"file_1",10,4348 
"file_2",1,1635 
"file_3",1,3237 

    for(i in 1:length(file.names)){ 
     ## calculate number of keywords and total words for each file within a folder 
     x <- data.frame(keyword,totalword) 
     write.csv(x, file="results.csv",row.names = TRUE) 
    } 

Использование приведенный выше код, все, что я могу получить следующий:

"","keyword","totalword" 
"1",10,4348 
"2",1,1635 
"3",1,3237 

каждый знает, как указать имя строки, используя имя каждого исходного файла (т.е. изменения «1» «2» «3» до «file_1 "," file_2, "file_3"?

+0

Я просто понял это - используйте простую 'filename <- append (filename, print (file.names [i])), а затем включите' filename' в 'data.frame' – kxiang

ответ

0

С этими данными:

keyword<-c(10,1,1) 
totalword<-c(4348,1635,3237) 

Вот несколько вариантов:

x<-data.frame(keyword,totalword,row.names=paste0('file_',1:3)) 
write.csv(x, file="results.csv",row.names = TRUE) 

или

x<-data.frame(keyword,totalword) 
rownames(x)<-paste0('file_',1:3) 
write.csv(x, file="results.csv",row.names = TRUE) 

или

write.csv(x,file="results.csv",row.names=paste0('file_',1:3)) 

все они вернутся, что в файле CSV:

"","keyword","totalword" 
"file_1",10,4348 
"file_2",1,1635 
"file_3",1,3237 

Я предположил, что у вас есть 3 строки, и вы затем записываете csv. Если вы хотите, чтобы написать одну строку в формате CSV затем следующий и так далее (по одной строке для каждой итерации), вы могли бы сделать что-то вроде:

write.csv(x,file="results.csv",append=TRUE,row.names=paste0('file_',i)) 
1

У вас есть имена файлов в «file.names» так что просто изменить
x <- data.frame(keyword,totalword) в
x <- data.frame(file.names[i],keyword,totalword)
Вы, возможно, придется избавиться от row.names = TRUE.