Я написал сценарий для чтения файла с диска и проверки значений в нем и записи 3 других файлов на диске. К сожалению, что-то, что казалось очень прямым, стало головной болью. Код:read.table, diff и intersect error
Arqcodnegs ="result/lista_de_codnegs.txt"
dirout = "./result/"
Codnegs_fornecidos = c("ABC", "A1B2", "PETR3")
Verifica_codneg = function (Codnegs_fornecidos, Arqcodnegs) {
if (!file.exists(Arqcodnegs)) {
stop("Falta arquivo lista_de_codnegs.txt")
}
Codnegs_lidos = read.table(Arqcodnegs,header=FALSE, sep='\t', quote='\"', stringsAsFactors=TRUE)
Codnegs_negativos = c(setdiff (Codnegs_fornecidos, Arqcodnegs))
Codnegs_positivos = c(intersect (Codnegs_fornecidos, Arqcodnegs))
write.table(Codnegs_lidos, paste(dirout, "lista_de_codnegs_lidos.txt", sep=''), col.names=FALSE, row.names=FALSE, sep='\t')
write.table(Codnegs_negativos, paste(dirout, "lista_de_codnegs_negativos.txt", sep=''), col.names=FALSE, row.names=FALSE, sep='\t')
write.table(Codnegs_positivos, paste(dirout, "lista_de_codnegs_positivos.txt", sep=''), col.names=FALSE, row.names=FALSE, sep='\t')
}
Файл "lista_de_codnegs.txt" имеет следующие значения в нем:
"PDGR3" "PETR3" "PETR4"
Как и ожидалось, файл " lista_de_codnegs_lidos.txt "возвращает соответствующие значения в одном столбце, что означает« PDGR3 »,« PETR3 »и« PETR4 ».
Но, основными проблемами являются:
Файл "lista_de_codnegs_negativos.txt" возвращает "ABC", "A1B2", "PETR3", но он должен был возвратить "ABC" и «A1B2 ", только.
Файл «lista_de_codnegs_positivos.txt» не возвращает значений, но должен возвращать «PETR3».
Что я делаю неправильно?
Вы ocmparing для 'Arqcodnegs', который не содержит ни одной из переменных из' Codnegs_fornecidos'. Итак, ожидаемое поведение. С чем вы действительно хотите сравнить? colnames codnegs_lidos? – Heroka
Я хочу проверить, можно ли найти Codnegs_fornecidos в файле Arqcodnegs. Найденные Codnegs_fornecidos записываются в файл Codnegs_positivos, а те, которые не найдены, записываются в файл Codnegs_negativos. – Newbie1971
Вы можете сделать 'codnegs_negativos = setdiff (codnegs_fornecidos, codnegs_lidos)', но зависит от того, как выглядят ваши данные. – Heroka