В пакете splitstackshape
есть вспомогательная функция charMat
, которую вы можете попробовать
dat <- paste0("data", 1:3)
out <- t(splitstackshape:::charMat(listOfValues = mget(dat), fill = 0L))
colnames(out) <- dat
out
# data1 data2 data3
#a 1 0 1
#b 1 0 0
#c 1 0 1
#d 1 0 0
#e 1 1 0
#f 1 1 0
#g 0 1 1
data
data1 <- c("a", "b", "c", "d", "e", "f")
data2 <- c("e", "f", "g")
data3 <- c("a", "c", "g")
объяснение
Функция ожидает list
в качестве первого аргумента.Мы можем использовать mget
для создания этого списка
mget(dat)
#$data1
#[1] "a" "b" "c" "d" "e" "f"
#$data2
#[1] "e" "f" "g"
#$data3
#[1] "a" "c" "g"
, где dat
- это символьный вектор, содержащий имена ваших входных данных
dat
#[1] "data1" "data2" "data3"
t
используется длятранспонировать вывод charMat
.
Надеюсь, это поможет.