Форма levs
, содержащая уровни в отсортированном порядке, а затем для каждого столбца df
определите, какие в нем левы. Это дает логическую матрицу, которую мы можем преобразовать в числовое значение, используя +
.
levs <- sort(unique(unlist(df))) # a b c d e f g h
+ sapply(df, function(x) levs %in% x)
, что дает:
topic1 topic2 topic3
[1,] 1 1 0
[2,] 1 0 1
[3,] 1 0 1
[4,] 1 0 0
[5,] 0 1 0
[6,] 0 1 0
[7,] 0 1 1
[8,] 0 0 1
Последняя строка может быть записана еще более компактно, как:
+ sapply(df, `%in%`, x = levs)