Вы можете использовать which
для поднабора, используя список имен строк из второго фрейма данных в качестве источника имен столбцов для исключения.
df1[ , -which(names(df1) %in% row.names(df2)), drop=FALSE]
GO_5
1 1
2 1
3 1
4 1
5 1
Данные:
df1 <- data.frame(GO_267=c(0,0,0,0,0), GO_345=c(1,1,1,1,1), GO_5=c(1,1,1,1,1),
GO_2=c(1,1,1,1,1))
df2 <- data.frame(z=c(2,3,7))
row.names(df2) <- c("GO_267", "GO_345", "GO_2")