Я столкнулся с проблемой получения целочисленного ввода при решении задачи на CodeChef , где две целые числа, разделенные пробелом, должны быть считаны из одной строки.
Пока int(input())
достаточно для одного целого числа, я не нашел прямого способа ввода двух целых чисел. Я пробовал это:
num = input()
num1 = 0
num2 = 0
for i in range(len(num)):
if num[i] == ' ':
break
num1 = int(num[:i])
num2 = int(num[i+1:])
Теперь я использую num1 и num2 как целые числа. Надеюсь, это поможет.
Это немного запутанно, но получает желаемый результат:
zz <- textConnection("foo", "w")
write.table(t(df), file = zz, col.names=F, sep=",", quote=F)
close(zz)
foo
# [1] "ID,1,2,3" "X,a,b,c" "Y, 1, 2,NA"
cat(paste(foo, collapse='\n'), file = 'test.csv', sep='')
Вы должны получить файл с символом новой строки после только первых двух строк данных.
Вы можете использовать служебную программу командной строки, например sed, для удаления конечных пробелов из файла:
sed -e :a -e 's/^.\{1,77\}$/ & /;ta'
Или вы можете начать с написания одной строки, а затем с помощью append
.
stringr
по-прежнему производит линию в конце.
– pfifas
31 July 2014 в 11:41
Альтернатива в аналогичном ключе ответа @Thomas, но с немного меньшей типизацией. Отправьте вывод из write.csv
в строку символов (capture.out
). Соедините строку (paste
) и разделите элементы с помощью строк (collapse = \n
). Запись в файл с помощью cat
.
x <- capture.output(write.csv(df, row.names = FALSE, quote = FALSE))
cat(paste(x, collapse = "\n"), file = "df.csv")
Вы также можете использовать format_csv
из пакета readr
для создания символьного вектора с разрывами строк (\n
). Удалите последний конец строки \n
с помощью substr
. Напишите в файл с помощью cat
.
library(readr)
x <- format_csv(df)
cat(substr(x, 1, nchar(x) - 1), file = "df.csv")