У меня есть более концептуальный вопрос.Я ищу способ удаления всей строки из фрейма данных, если он содержит ссылку на данные, которых нет во втором фрейме данных.Приведенный ниже код даст вам набор данных для этой проблемы.
v1 <- c(1, 2, 3, 4, 5, 6, 8)
v2 <- 100
nodedf <- data.frame(v1, v2)
colnames(nodedf) <- ("nid", "extra_variable")
v3 <- c(1, 2)
v4 <- c(1, 5)
v5 <- c(2, 6)
v6 <- c(3, 7)
v7 <- c(4, 9)
elementdf <- data.frame(v3, v4, v5, v6, v7)
colnames(elementdf) <- c("eid", "n1", "n2", "n3", "n4")
По сути, я хочу удалить любую строку из elementdf
, если она ссылается на идентификаторы узлов (n1, n2, n3, n4), которыене существует в nodedf
.Я знаю, что это, вероятно, довольно простая проблема, но я действительно не так хорош в таких вещах.Спасибо.
РЕДАКТИРОВАТЬ: теперь я хочу сделать обратное, где я хочу удалить строки nodedf, которые ссылаются на узлы, которые не существуют в elementdf.
Сначала я попытался просто переставить старый фрагмент кода следующим образом:
orphannodesbye<- nodedf[apply(nodedf[,1], 1, function(x) all(x %in% elementdf[,2:5])),]
Однако я получаю сообщение об ошибке:
Error in apply(nodedf[, 1], 1, function(x) all(x %in% elementdf[, 2:5])) :
dim(X) must have a positive length
Я бынапример, вывод будет целым df с обоими полями (или более, поскольку мой фактический набор данных имеет больше) nid
и extra_variable
.