我有一个数据框,其中一列是矢量。我想从我的数据框中选择该列与另一个向量相交的所有行。
编辑: 这是示例代码和输出。
require(dplyr)
# DataSet
df = read.csv('data/exampledata.csv', na.strings=c(""), header=TRUE, stringsAsFactors=FALSE)
df[is.na(df)] <- 'None'
df$COLUMN3 <- strsplit(df$COLUMN3, "/")
dput(df)
myVector <- c("me", "stackoverflow")
df[length(intersect(df$COLUMN3, myVector)) > 0,] # doesn't work
输出:
structure(list(COLUMN1 = c("something", "something", "something"), COLUMN2 = c("something", "something", "something"), COLUMN3 = list(c("please", "help", "me"), c("please", "stackoverflow"), c("im", "desperate"))), .Names = c("COLUMN1", "COLUMN2", "COLUMN3"), row.names = c(NA, -3L), class = "data.frame")
答案 0 :(得分:1)
column3 = list(c("please", "help", "me"), c("please", "stackoverflow"), c("im", "desperate"))
myVector <- c("me", "please")
idx <- which(sapply(column3, function(x) length(intersect(myVector, x))) > 0)
idx应该根据需要提供c(1,2)
。然后执行df[idx,]
顺便说一下,使用矢量列表作为数据帧列之一并不是一个好主意。它有点工作......并且根据操作不起作用。 data.table
更好地支持它。