2015-03-23 6 views
1

Я выполнил текстовый поиск в файле в R, а затем добавил его в существующий файл в качестве нового столбца. Когда это будет сделано, столбец будет добавлен после фактического содержимого. Как это исправить?Добавление результата в существующий файл в R с помощью write.table

Результат выглядит следующим образом:

Customer Names 
T-MAX INDUSTRIAL LTD 
T-MAX INDUSTRIAL LTD. 
ADCHEM 
ADCHEM (AUSTRALIA) 
ADCHEM (AUSTRALIA) PTY LTD 
AUROBINDO PHARMA (AUSTRALIA) 
AUROBINDO PHARMA (AUSTRALIA) PTY 
Aurobindo Pharma (Australia) Pty 
AUROBINDO PHARMA(AUSTRALIA) PTY LTD 
AUROBINDO PHARMA(AUSTRALIA)PTY LTD 
V1 
tmax industrial 
tmax industrial 
adchem 
adchem 
adchem 
aurobindo pharma 
aurobindo pharma 
aurobindo pharma 
aurobindo pharma 
aurobindo pharma 

Но мой выход должен выглядеть следующим образом:

Customer Names       V1 
T-MAX INDUSTRIAL LTD     tmax industrial  
T-MAX INDUSTRIAL LTD.     tmax industrial  
ADCHEM         adchem 
ADCHEM (AUSTRALIA)      adchem  
ADCHEM (AUSTRALIA) PTY LTD    adchem  
AUROBINDO PHARMA (AUSTRALIA)   aurobindo pharma  
AUROBINDO PHARMA (AUSTRALIA) PTY  aurobindo pharma  
AUROBINDO PHARMA (AUSTRALIA) PTY  aurobindo pharma  
AUROBINDO PHARMA(AUSTRALIA) PTY LTD  aurobindo pharma  
AUROBINDO PHARMA(AUSTRALIA)PTY LTD  aurobindo pharma  

Код я использовал:

result <- data.frame(text=unlist(sapply(b, `[`)), stringsAsFactors=FALSE) 
write.table(result, file="Counter_Party_Testing.csv", sep=".", eol="\n", append=TRUE, row.names=FALSE, col.names=FALSE) 

, а затем результат, хорошо Оригинал преобразуется в dataframe grp1 как Origin, а grp2 в качестве результата, теперь нужна помощь с оператором печати для печати sam e строит каждый из двух файлов в одной строке в выходном файле, используя для цикла.

я использовал этот код в то время как оператор печати бросает ошибку,

for (n in seq_len(nrow(grp1))) 
{ 
    print(grp1[n]+','+grp2[n]+) 
} 
+0

Что команда, которую вы использовали? –

+0

Я использовал write.table – KRU

+0

Вы должны отредактировать свой вопрос, чтобы добавить команду, которую вы использовали. –

ответ

0
with open('file-one.txt', 'r') as origin: 
    original_data = origin.readlines() 

with open('file-two.txt', 'r' as merge: 
    merge_data = origin.readlines() 

with open('output.csv', 'w' as output: 
    for i in range(len(original_data)): 
     output.write(original_data[i].strip() + ', ' + merge_data[i].strip() + '\n') 

Это решало проблему, где ваши данные не слиты правильно. Теперь, как вы используете write.table, чтобы представить его без моей повседневной работы. Но с точки зрения исходных данных это решает. Вы можете поместить конечный результат в строку, вместо того, чтобы записывать ее на диск, если хотите.

Следует отметить, что вы, вероятно, закончите с конечным \n, как и в предыдущем примере, это должно быть полосатым, прежде чем сливаться с любыми данными в той же строке. Кроме того, индекс может выйти за пределы диапазона, если данные слияния не имеют одинаковую или большую длину, чем исходные данные. Но это обработка ошибок, и я оставлю это вам, я только что представил концепцию решения вашей проблемы. Кроме этого, это довольно прямо вперед кодирования

+0

большое вам спасибо.! – KRU

+0

Я делаю это выше кода python с R, а застрял с консолью! могут ли пользователи 'R' помочь мне с этим кодом, пожалуйста! – KRU

+0

@ Паскаль, пожалуйста, не могли бы вы помочь мне с приведенным выше кодом 'python', который будет использоваться в' R', а затем застрял в консоли, пытаясь импортировать файл напрямую, используя 'file.choose()'. может ли 'with open' использоваться непосредственно в' R'? – KRU

0

получили желаемый результат с помощью этого кода:

df <- cbind(origin, result) 


# Move to new file 
    write.table(df, file="new_OT5.csv", sep=",", append=TRUE , row.names=FALSE, col.names=FALSE)