R выбрать строку фрейма данных в интерактивном режиме

У меня есть фрейм данных, скажем:

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

Я хотел бы иметь возможность отображать фрейм данных для пользователя, чтобы они выбирали (щелкали) строку и извлекали эту строку.

Что-то вроде edit(df)за исключением того, что я хочу, это гораздо проще, потому что мне не нужны функции редактирования --- мне просто нужно прослушать событие щелчка на одной из строк и получить индекс для этой строки (мне даже не нужны конкретная клетка!)

Кто-нибудь знает, как я могу это сделать? Я бы предпочел сделать это с базой R или grid (ради того, чтобы не добавлять много пакетов) - возможно, я могу каким-то образом нарисовать фрейм данных в виде сетки с масштабом Y, определенным от 1 до nrow(df) и использовать grid.locator() функционировать?

Было бы неплохо избегать добавления пакетов с графическим интерфейсом, но если я это сделаю, то это должно быть кросс-платформенным (linux/windows). gwidgets довольно хорошо (хотя они, кажется, не имеют события click, хорошо интегрированного с их gdf виджет).

веселит.

2 ответа

Решение

Хорошо, вот быстрый способ, без дополнительных пакетов, но вам, возможно, придется возиться с форматированием, если вы хотите, чтобы таблица была хорошо выровнена, округлена и т. д.:

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

Устройство расширяется, если необходимо, и полосы прокрутки автоматически появляются при необходимости.

Я собирался предложить комбинацию пустого участка, заполненного addtable2plot а затем использовать locator выбрать точку и рассчитать строку с комбинацией Y-спецификации и cellheight <- max(strheight(c(column.names, row.names, as.vector(unlist(table))),... но усилия в этом направлении кажутся глупыми, так как @timrifle, кажется, ударил гвоздь по голове.

Другие вопросы по тегам