Создание txt файла из кадра данных с определенным форматом фиксированной ширины

У меня есть фрейм данных под названием dfGL с 22 столбцами и 17000 строк! Имена строк: pressure, diameter, roughness...

Я хочу создать текстовый файл из этого фрейма данных, чтобы:

  • 1-й столбец dfGL начинается с позиции 1 текстового файла (строка 1, столбец 1),
  • 2-й столбец начинается с позиции 25 (строка 1, столбец 25),
  • 3-й столбец начинается с позиции 50 (строка 1, столбец 50),
  • и так далее! введите описание изображения здесь

3 ответа

Решение

Вот решение, которое работает:

dfGL<- rbind (colnames (dfGL), dfGL)

write.fwf (dfGL, file = paste ("Inpuuuttt", ".txt", sep = ""), width = 25, имена строк = T, имена столбцов = F, цитата = F)

Я бы предложил использовать write.fwf от gdata пакет, если вы хотите создать файл с фиксированной шириной. Кажется, что имена столбцов не сохраняются в правильном положении, поэтому, чтобы обойти это, вы можете отформатировать их в соответствии с шириной столбцов, которую вы хотите использовать. formatC,

library(gdata)
colnames(dfGL) <- formatC(colnames(dfGL), width = 25, flag = " ")
write.fwf(dfGL, file = "C:/Users/sara/Desktop/Inputttt.txt", width = rep(25,ncol(dfGL)), sep="")

Я думаю, что вы пытаетесь получить текстовый файл с разделителями с 24 пустыми столбцами между каждой смежной переменной. Вот своего рода обходное и неуклюжее решение. Он сломается, если у вас есть какие-либо строки с запятыми в любой из ваших переменных, и это раздражает тем, что в строке записано 24 запятых (вы можете считать их с помощью nchar()) и совершает нарушение, сохраняя данные на диск, а затем считывая их обратно.

# Export your data.frame to a csv file
write.csv(YourDataFrame, file="Path/To/File.csv", row.names=FALSE)

# Read in the lines of the file
fileLinesTemp = readLines("Path/To/File.csv")
# Add a bunch of commas to add columns
fileLinesTemp = gsub(",", ",,,,,,,,,,,,,,,,,,,,,,,,", fileLinesTemp)

# Write the new lines back to the file
fileConn = file("Path/To/File.csv")
writeLines(fileLinesTemp, fileConn)
close(fileConn)
Другие вопросы по тегам