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, кажется, ударил гвоздь по голове.