试试这个:
# read your data dat <- strsplit(readLines(textConnection("(time1) entitya entityf entityz (time2) entityg entityh (time3) entityo entityp entityk entityL (time4) entityM")), " ") # remove (time) dat <- lapply(dat, `[`, -1) # filter nodelist <- c("entitya", "entityf", "entityz", "entityg", "entityh", "entityo", "entityp", "entityk") dat <- lapply(dat, intersect, nodelist) # create an edge matrix t(do.call(cbind, lapply(dat[sapply(dat, length) >= 2], combn, 2)))
最后一步可能需要消化很多,所以这是一个突破:
sapply(dat, length)
dat[... >= 2]
lapply(..., combn, 2)
do.call(cbind, ...)
t(...)