#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")