将 playGetIDs 的 ID 输出到 R 中的 Vector

Output IDs from playGetIDs to a Vector in R

这是一组 x 和 y 对:

x = c( 3, 1,  2, 10,  9,  8,  6,  7,  5,  4)
y = c(15, 5, 10, 50, 45, 40, 30, 35, 25, 20)

我希望能够以交互方式识别此数据的索引,并按照识别点的顺序存储已识别点的索引。

尽管 identify() 说它将用 pos = FALSE 执行此操作,但我无法让它工作。

如果可能的话,我更愿意使用 playwith - 放大点密度高的区域真的很容易,select 点,缩小,然后保持 selecting 点.

这是一个好的开始,借自 "copeg":

 playwith(xyplot(y ~ x, main = "Select Points to Delete, then close"),
    width = 4, height = 3.5, show.toolbars = FALSE,
    on.close = confirmClose, modal = FALSE,
    click.mode = "Brush")

剧情加载后,select点,然后

 index <- playGetIDs()

我已经尝试了 playGetIDs() 行的各种替代方法,但我无法让它按照 selected 的顺序用 ID 填充 index .

如果您使用非模态 window,playwith 函数将 return 立即 return 一个 playState 对象。

ps = playwith(xyplot(y ~ x, main = "Select Points to Delete, then close"),
    width = 4, height = 3.5, show.toolbars = FALSE,
    click.mode = "Brush")

然后您可以 select 图中的点,完成后从 playState 对象获取 ID。

selectedIDs = playGetIDs(ps);

或者,zoom 包有一个 zm() 函数来缩放绘图,并且可以与 identify 一起使用,尽管调用必须是独立的:

library(zoom)
plot(x,y)
zm()
#use mouse or keys to navigate and zoom, then exit
chosen = identify(x,y) 
zm()
#zoom to another location if needed
chosen = c(chosen, identify(x,y))
#etc...

请注意,我发现此包的功能取决于 R 版本(我有 2.1、2.14 和 3.2,但它仅适用于 3.2)