У меня есть фрейм данных, который записывается в таблицу с именем заголовка вверху. Вот некоторый воспроизводимый код.
library(gdata)
df = as.list(c(1:100))
df = unlist(df)
dim(df) = c(length(df)/5, 5)
array_name = as.data.frame(c("Data:"))
write.fwf(array_name,'new_file.txt',append=T,sep=" ",colnames=F,rownames=F,quote=F)
write.fwf(df,'new_file.txt',append=T,sep=" ",colnames=F,rownames=F,quote=F)
Вот вывод ...
Data:
1 21 41 61 81
2 22 42 62 82
3 23 43 63 83
4 24 44 64 84
5 25 45 65 85
6 26 46 66 86
7 27 47 67 87
8 28 48 68 88
9 29 49 69 89
10 30 50 70 90
11 31 51 71 91
12 32 52 72 92
13 33 53 73 93
14 34 54 74 94
15 35 55 75 95
16 36 56 76 96
17 37 57 77 97
18 38 58 78 98
19 39 59 79 99
20 40 60 80 100
Как мне сделать так, чтобы это выглядело так ...
Data:
0: 1 21 41 61 81
5: 2 22 42 62 82
10: 3 23 43 63 83
15: 4 24 44 64 84
20: 5 25 45 65 85
25: 6 26 46 66 86
30: 7 27 47 67 87
35: 8 28 48 68 88
40: 9 29 49 69 89
45: 10 30 50 70 90
50: 11 31 51 71 91
55: 12 32 52 72 92
60: 13 33 53 73 93
65: 14 34 54 74 94
70: 15 35 55 75 95
75: 16 36 56 76 96
80: 17 37 57 77 97
85: 18 38 58 78 98
90: 19 39 59 79 99
100: 20 40 60 80 100
Итак, в основном я хочу:
1) добавить столбец с именем строки, интервалы которого равны 5.
2) сделать каждый столбец справа вверху.
3)сдвиньте все вправо от имени заголовка (в соответствии с первой цифрой последней строки - т.е. "100".
Редактировать / Решение:
Это то, что я сделал, чтобы решитьЯ заменил «df» на «G», потому что это переменная, которую я использовал для моего скрипта.
array_name <- as.data.frame(c("G:"))
G <- as.list(t(dflist2$`1`[2][!dflist2$`1`[2] == ""]))
G <- unlist(G)
dim(G) <- c(length(G)/5, 5)
G <- as.data.frame(G)
G <- cbind(row = 0, G)
for (x in 1:nrow(G)) {
if (row.names(G[x,]) == "1") {G[x,"row"] = 0
} else {G[x,"row"] = G[x-1,"row"]+5}
}
row.names(G) <- sprintf(" %i:", G$row)
G <- G[,-1]
write.fwf(array_name, 'new_file.txt', append = TRUE, sep = "",
colnames = FALSE, rownames = FALSE, quote = FALSE)
write.fwf(G,'new_file.txt',append=TRUE,sep=" ",
colnames=FALSE,rownames=TRUE,quote=FALSE)