Требуется особая забота, чтобы создать такую сущность. Но тогда вы можете использовать аргумент col.names и присвоить ему имена colnames (dfrm).
> tst <- data.frame(`a-b`= letters[1:10], `1-2`=1:10, check.names=FALSE)
> colnames(tst)
[1] "a-b" "1-2"
> write.table(tst, file="tst.txt", col.names=colnames(tst) )
Вставлено из моего редактора:
"a-b" "1-2"
"1" "a" 1
"2" "b" 2 snipped the rest...
Нет успеха с write.table? Я вижу, что write () не имеет такой же набор опций, как write.table. Давайте создадим массив (а не фрейм данных) с нечеткими именами, имеющими "-":
DCtest <- array(1:27, c(3,3,3))
dimnames(DCtest) <- list(dim1 =c(a="a-b",b="b-c",c="c%d"),
dim2=letters[4:6],
dim3= letters[7:9])
Один быстрый способ получить вывод - это capture.output ():
capture.output(DCtest, file="testm.txt")
testm.txt теперь выглядит так в редакторе:
, , dim3 = g
dim2
dim1 d e f
a-b 1 4 7
b-c 2 5 8
c%d 3 6 9
, , dim3 = h
dim2
dim1 d e f
a-b 10 13 16
b-c 11 14 17
c%d 12 15 18
, , dim3 = i
dim2
dim1 d e f
a-b 19 22 25
b-c 20 23 26
c%d 21 24 27
Также не следует забывать, что выходные данные захвата имеют параметр append =, если вы хотите добавлять последовательные фрагменты в массив.