Я использую write () для записи нескольких строк в один и тот же файл следующим образом:
filename='out.txt'
write(c("\n\n","No of blues =", nrow(data1)), file=filename,append=FALSE)
write(c("\n\n","No of greens =", nrow(data2)), file=filename,append=Append)
write(c("\n\n","No of reds =", nrow(data3)), file=filename,append=Append)
Data1, data2 и data3 - имена переменных.
Но у меня были следующие ошибки:
Error in cat(list(...), file, sep, fill, labels, append) :
argument 1 (type 'list') cannot be handled by 'cat'
Есть ли решение этой проблемы в R?
2 ответа
Предположительно, вы пытаетесь write
фрейм данных. Это предположение, потому что строки, которые вы нам даете, должны работать. Я не верю, что они дают ошибку. Важная часть задаваемых здесь вопросов - это немного поработать самостоятельно, чтобы выяснить, где находится ошибка, и предоставить автономный код, который генерирует ошибку. Как это не так:
Append=TRUE
filename='out.txt'
data1=data.frame(x=1:10)
data2=data.frame(y=1:3)
data3=data.frame(z=99)
write(c("\n\n","No of blues =", nrow(data1)), file=filename,append=FALSE)
write(c("\n\n","No of greens =", nrow(data2)), file=filename,append=Append)
write(c("\n\n","No of reds =", nrow(data3)), file=filename,append=Append)
Если я запустил это (и если ВЫ тоже запустите), то я не получу сообщения об ошибке. Но попробуйте это:
write(c("\n\n","data 1 is ", data1), file=filename,append=Append)
И посмотри:
Error in cat(list(...), file, sep, fill, labels, append) :
argument 1 (type 'list') cannot be handled by 'cat'
Собственно ваша ошибка. Может это то, что ты делаешь. Мы не знаем, потому что у нас нет от вас кода, который вызывает эту ошибку.
Если вы хотите записать фрейм данных в файл, используйте write.table
.
Просто используйте cat напрямую вместо записи
filename='out.txt'
data1 = matrix(1:10, ncol=2)
data2 = matrix(1:20, ncol=2)
data3 = matrix(1:30, ncol=2)
cat("No of blues =", nrow(data1), "\n", file=filename, append=FALSE, sep='')
cat("No of blues =", nrow(data2), "\n", file=filename, append=TRUE, sep='')
cat("No of blues =", nrow(data3), "\n", file=filename, append=TRUE, sep='')
#results
cat(readLines(filename), sep="\n")
## No of blues =5
## No of blues =10
## No of blues =15
Вы также можете объединить три строки в один вызов cat, чтобы не было необходимости возиться с добавлением в файлы, что всегда является рискованным делом.
cat("No of blues =", nrow(data1), "\n",
"No of blues =", nrow(data2), "\n",
"No of blues =", nrow(data3), "\n", file=filename, sep='')
#results
cat(readLines(filename), sep="\n")
## No of blues =5
## No of blues =10
## No of blues =15
Похожие вопросы
Новые вопросы
r
R - это бесплатный язык программирования с открытым исходным кодом и программная среда для статистических вычислений, биоинформатики, визуализации и общих вычислений. Пожалуйста, предоставьте минимальные и воспроизводимые примеры вместе с желаемым результатом. Используйте dput () для данных и укажите все небазовые пакеты с вызовами library (). Не вставляйте изображения для данных или кода, вместо этого используйте блоки кода с отступом. По вопросам, связанным со статистикой, используйте https://stats.stackexchange.com.