2012-02-07 85 views
4

我有一個數據幀,說:r選擇已行交互

df <- data.frame(a=1:10,b=runif(10)) 

我想能夠顯示該數據幀給用戶,讓他們選擇(單擊)的行,和檢索那一行

有點像edit(df),除了我想要的更簡單,因爲我不需要編輯功能---我只需要監聽其中一行上的單擊事件並獲取該索引排(我甚至不需要特定的細胞!)

有誰知道我該怎麼做?我寧願使用base R或grid(爲了不添加大量的軟件包)這樣做 - 也許我可以以某種方式將數據幀繪製在1y到nrow(df)之間的網格圖形上,並使用grid.locator()功能?

這將是很好,以避免引入gui包,但如果我這樣做,它應該是跨平臺(linux/windows)。 gwidgets是相當不錯的(雖然他們似乎沒有與他們的gdf小部件很好地集成的點擊事件)。

歡呼聲。

+1

如果使用gWidgets,請嘗試gtable,而不是gdf,因爲那裏的鼠標點擊也會觸發編輯。索引= TRUE的gtable的svalue方法將返回所選行的索引。否則,您可以使用圖形設備來完成此操作,但是如果沒有滾動條,您將不得不限制顯示的數據框的大小。 – jverzani 2012-02-07 13:00:58

回答

7

好,這裏有一個快速的方法,沒有多餘的包,但你可能有格式亂動,如果你想被很好地對準錶,圓形的,等:如有必要

df <- data.frame(a=1:10,b=runif(10)) 
    df[menu(apply(df,1,paste,collapse=" "),graphics=TRUE),] 

設備擴大自身並在必要時自動出現滾動條。

+1

他要求的僅僅是:'menu(apply(df,1,paste,collapse =「」),graphics = TRUE)' – 2012-02-07 13:40:46

+0

oops我以爲他想要的是行而不是行索引 – 2012-02-07 13:44:54

+0

然後再讀一遍,我認爲你的回答是合理的。 – 2012-02-07 13:46:25

0

我要建議一個空白的情節充滿了addtable2plot,然後用locator選擇一個點,並用組合來計算該行的Y型規格和cellheight <- max(strheight(c(column.names, row.names, as.vector(unlist(table))),...但努力在這個方向的組合似乎愚蠢的,因爲@timrifle似乎已經擊中了頭部。