[英]Displaying data in a pop up window (table widget) using tcltk in R - why is it dropping the last row of data?
我正在努力創建一個小部件來使用 tcl/tk 在彈出窗口中查看表格。 我正在關注這個例子: http : //r.789695.n4.nabble.com/Tck-tk-help-td1837711.html
但是當我用我的數據運行腳本時,最后一行數據不包含在數組中。 這是汽車數據的示例(表不顯示行名稱無關緊要):
require(tcltk)
tclRequire("Tktable")
toTclArray<-function(dsn,dig=2) {
# http://r.789695.n4.nabble.com/Tck-tk-help-td1837711.html
# Converts Data Frame/Matrix to a Tcl Array for Use in Displaying Tables
# dsn is the data set name
# dig is the number of digits to round to
require(tcltk)
tclarray1<-tclArray()
for (i in 0:(dim(dsn)[1])) {
for (j in 0:(dim(dsn)[2]-1)) {
# First Row is Set to Column Names to be Used as Labels
if (i==0) {
tclarray1[[i,j]]<-colnames(dsn)[j+1]
} else {
tem<-dsn[i,j+1]
tclarray1[[i,j]]<-ifelse(is.na(tem),".",
ifelse(is.numeric(tem),round(tem,digits=dig),
as.character(tem)))
}
}
}
return (tclarray1)
}
temptable <- toTclArray(mtcars)
tt<-tktoplevel()
table1 <- tkwidget(tt,"table",variable=temptable,rows=dim(mtcars)[1],
cols=dim(mtcars)[2],titlerows=1,selectmode="extended",colwidth=10)
tkgrid(table1, pady = 20, padx = 30)
據我了解,原始數據集中第一行數據為第1行,第一列數據為第1列。在數組中,表頭為第0行,第一行數據為第1行,第一列數據是第零列。 在 for 循環中,它從行 (i) 0 到 32 和列 (j) 0 到 10。這是有道理的,因為列正在從 1-11 移動到 0-10,但行不應該需要更改因為仍然會有 32 行數據。 所以我無法弄清楚代碼中需要編輯什么才能將最后一行數據添加到表中。
(我確信有一個很棒的包可以運行這個任務,但我正在為一個工作中的項目創建一個界面,我被指示不要使用任何不隨基本 R 提供的包)
任何幫助深表感謝。 謝謝!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.