Вот вариант с tidyverse
. Используя map2
из purrr
, переберите соответствующие «списки» столбцов list
с помощью «Id» и получите элементы, которые не найдены в «Id», с помощью setdiff
library(tidyverse)
df1 %>%
mutate(lists = map2(lists, Id, setdiff))
# Id lists
#1 1 5, 2, 3
#2 2 3, 4
[117 ] данные df1 <- structure(list(Id = 1:2, lists = list(c(5, 2, 3), c(2, 3, 4))),
row.names = c(NA,
-2L), class = "data.frame")
Что бы вы ни делали, используйте XCB, а не Xlib. Он современный, асинхронный, более простой и дает вам прямой доступ к протоколу X11.
Посмотрите код для DWM . Кодовая база красива и проста для понимания. Всего около 2000 строк.
http://code.google.com/p/partiwm/ - это попытка написать оконный менеджер (мозаичный, а не стековый) с нуля, вам может быть полезно прочитать код.
Очень минималистичный WM - это wm2 . Я не читал исходный код и, следовательно, не знаю, является ли это обучающим примером. Конечно, вы можете использовать библиотеки, которые уже выполняют большую часть работы по абстракции и рисованию, например gdk и gtk . Но поскольку этот проект предназначен только для личного обучения, я бы пошел дальше и использовал Xlib напрямую.
Вот несколько ссылок, которые могут быть вам полезны:
metacity использует gtk для определенных элементов пользовательского интерфейса. Смотрите его HACKING и README.
см. также Где есть хорошие руководства по программированию на Xlib?