例如,假设我有一个名为df
的数据框,其中"ID"
列为整数,我想抓取我"ID"
中的值所在的数据框的子集向量[123,198,204,245,87,91,921].
R的语法是什么?
答案 0 :(得分:1)
我相信你想要%in%
功能:
df <- data.frame(ID=1:1000, STUFF=runif(1000))
df2 <- df[df$ID %in% c(123,198,204,245,87,91,921), ]
答案 1 :(得分:0)
请告诉我它是否能解决您的问题。
首先,我们需要哪个功能。
?其中
哪些指数为真?
描述
给出逻辑对象的TRUE索引,允许数组索引。
i <- 1:10
which(i < 5)
1 2 3 4
我们还需要%in%运算符:
?"%in%"
%in%是一个更直观的界面作为二元运算符,它 返回一个逻辑向量,指示是否存在匹配 左操作数。
2 %in% 1:5
TRUE
2 %in% 5:10
FALSE
并肩作战
# some starting ids
id <- c(123, 204, 11, 12, 13, 15, 87, 123)
# the df constructed with the ids
df <- data.frame(id)
# the valid ids
valid.ids <- c(123,198,204,245,87,91,921)
# positions is a logical vector which represent for each element if it's a match or not
positions <- df$id %in% valid.ids
positions
[1]是,否则为假,否则为假,为真是
# BONUS
# we can easily count how many matches we have:
sum(positions)
[1] 4
# using the which function we get only the indices 'which' contain TRUE
matched_elements_positions <- which(positions)
matched_elements_positions
1 2 7 8
# last step, we select only the matching rows from our dataframe
df[matched_elements_positions,]
123 204 87 123