R tkinsert не распознает «\ n»

#r #tcltk

#r #tcltk

Вопрос:

Новый пример

Я обновляю вопрос после комментария пользователя 2554330. Поскольку я обновил свою версию R, функция tkinsert из пакета tcltk не распознает флаг «n». Как я могу писать разные строки?

Новый пример. Это реальный пример, который раньше работал, записывая 3 строки звездочек и 3 пустые строки:

 library(tcltk)
tt <- tktoplevel()
tkpack(txt.w <- tktext(tt))
endL <- paste0("***************************************", 
           "*************************")
tcltk::tkinsert(txt.w , "end", endL, collapse = "\n")
tcltk::tkinsert(txt.w , "end", endL, collapse = "\n")
tcltk::tkinsert(txt.w , "end", endL, collapse = "\n")
tcltk::tkinsert(txt.w , "end", paste("\n\n"))
tcltk::tkinsert(txt.w , "end", paste("\n\n"))
tcltk::tkinsert(txt.w , "end", paste("\n\n"))
 

Теперь я получаю это (я заменяю несколько звездочек точками, иначе сообщение отображается неправильно).

«n**************… n*****…*** nnnnnnnn»

Вместо трех строк звездочек и трех пустых строк.

На самом деле я мог бы написать это, но результат тот же.

 library(tcltk)
tt <- tktoplevel()
tkpack(txt.w <- tktext(tt))
endL <- paste0("***************************************", 
           "*************************")
tcltk::tkinsert(txt.w , "end", endL, collapse = "\n")
tcltk::tkinsert(txt.w , "end", endL, collapse = "\n")
tcltk::tkinsert(txt.w , "end", endL, collapse = "\n")
tcltk::tkinsert(txt.w , "end", "\n\n")
tcltk::tkinsert(txt.w , "end", "\n\n")
tcltk::tkinsert(txt.w , "end", "\n\n")
 

В этой другой версии результат остается тем же

 library(tcltk)
tt <- tktoplevel()
tkpack(txt.w <- tktext(tt))
endL <- paste0("***************************************", 
           "*************************")
tcltk::tkinsert(txt.w , "end", endL, collapse = "\n")
tcltk::tkinsert(txt.w , "end", endL, collapse = "\n")
tcltk::tkinsert(txt.w , "end", endL, collapse = "\n")
tcltk::tkinsert(txt.w , "end", "\n")
tcltk::tkinsert(txt.w , "end", "\n")
tcltk::tkinsert(txt.w , "end", "\n")
 

Старый пример

Поскольку я обновил свою версию R, функция tkinsert из пакета tcltk не распознает флаг «n». Я хочу написать разные строки, но » n» не работает, как и другие варианты (я получаю все числа, подобные этому: OneTwoThreeFourFiveSix.

 tt <- tktoplevel()
tkpack(txt.w <- tktext(tt))
tcltk::tkinsert(txt.w, "end", paste("One", collapse = "\n"))
tcltk::tkinsert(txt.w, "end", paste("Two", collapse = "n"))
tcltk::tkinsert(txt.w, "end", paste("Three", collapse = "nr"))
tcltk::tkinsert(txt.w, "end", paste("Four", collapse = "t"))
tcltk::tkinsert(txt.w, "end", paste("Five", collapse = "\t"))
tcltk::tkinsert(txt.w, "end", paste("Six", collapse = "rn"))
 

Я работаю над Windows.

Комментарии:

1. paste("One", collapse = "\n") и аналогичные выражения, приведенные ниже, будут полностью игнорировать collapse аргумент, потому "One" что это длина 1. collapse помещается между элементами при вставке более длинных векторов. Я не могу поверить, что это когда-либо работало для вас; вы должны проверить свои старые скрипты, чтобы найти то, что у них действительно было.

Ответ №1:

Теперь это работает (по крайней мере, в Windows):

 library(tcltk)
tt <- tktoplevel()
tkpack(txt.w <- tktext(tt))

endL <- paste0("***************************************", 
           "*************************")
tcltk::tkinsert(txt.w, "end", endL, collapse = "n")
tcltk::tkinsert(txt.w, "end", endL, collapse = "n")
tcltk::tkinsert(txt.w, "end", endL, collapse = "n")
tcltk::tkinsert(txt.w, "end", "nn")
tcltk::tkinsert(txt.w, "end", "nn")
tcltk::tkinsert(txt.w, "end", "nn")
 

Это тоже работает:

 library(tcltk)
tt <- tktoplevel()
tkpack(txt.w <- tktext(tt))

endL <- paste0("***************************************", 
           "*************************")
tcltk::tkinsert(txt.w, "end", endL)
tcltk::tkinsert(txt.w, "end", "n")
tcltk::tkinsert(txt.w, "end", endL)
tcltk::tkinsert(txt.w, "end", "n")
tcltk::tkinsert(txt.w, "end", endL)
tcltk::tkinsert(txt.w, "end", "n")
tcltk::tkinsert(txt.w, "end", "nn")
tcltk::tkinsert(txt.w, "end", "nn")
tcltk::tkinsert(txt.w, "end", "nn")
 

Старый пример теперь работает:

 tt <- tktoplevel()
tkpack(txt.w <- tktext(tt))
tcltk::tkinsert(txt.w, "end", "One", collapse = "n")
tcltk::tkinsert(txt.w, "end", "Two", collapse = "n")
tcltk::tkinsert(txt.w, "end", "Three", collapse = "n")
tcltk::tkinsert(txt.w, "end", "Four", collapse = "n")
tcltk::tkinsert(txt.w, "end", "Five", collapse = "n")
tcltk::tkinsert(txt.w, "end", "Six", collapse = "n")