Как записать в файл в виде табуляции?
Итак, у меня есть этот фрейм данных из файла постели, который называется input.bed:
V1 V2 V3 V4
1 chr1 11323785 11617177 TF1
2 chr1 12645605 13926923 TF2
3 chr1 14750216 15119039 TF3
4 chr1 18102157 19080189 TF1
5 chr1 29491029 30934636 TF2
6 chr1 33716472 35395979 TF4
7 chr1 36712462 37685238 TF5
8 chr1 37838094 38031209 TF3
Это фрейм данных, который я читаю из файла.bed (файл.bed имеет разделитель табуляции). Я хочу взять каждую строку и вывести ее в другой файл. Скажем, row1, я хочу, чтобы он был на input1.bed, строка 2 на input2.bed
Это была моя попытка:
for(i in 1:nrow(input.bed))
{
file.create(paste("input",i,".bed",sep=""));
}
for(i in 1:nrow(input.bed))
{
write.table(unlist(input.bed[i,]),paste("input",i,".bed",sep=""),sep="\t");
}
По некоторым причинам вывод моих файлов, это из input1.bed:
"V1" "chr1"
"V2" "11323785"
"V3" "11617177"
"V4" "TF1"
Но я хочу, чтобы вывод был разделен табуляцией следующим образом:
chr1 11323785 11617177 TF1
Что я делаю неправильно?
1 ответ
Решение
Вы можете использовать только один for
цикл следующим образом (q
это ваш фрейм данных)
for(i in 1:nrow(q)){
write.table(x = q[i,],
file = paste('input',i,'.bed',sep=''),
row.names = F,
col.names = F,
quote = F,
sep = '\t')
}
По сути, ваш подход был верным, вам просто нужно сообщить функции, что вы не хотите, чтобы все поведение по умолчанию (например, имена столбцов / строк, кавычки).