使用R检查列表中的值是否在 Dataframe 中的最快方法

aor9mmx1  于 2023-03-05  发布在  其他
关注(0)|答案(2)|浏览(172)

检查列表中的值是否在 Dataframe 中的最快方法是什么?
下面是我尝试过的方法(在一个大得多的数据集和一个大得多的列表上)

#list
list_vals <- list("a", "b", "c", "d")

#dataframe
df <- data.frame(col1 <- c("1", "a", "c"),
                 col2 <- c("24a" , "d", "b"))

#function to check presence 
pmt_present <- function(x) {
  present <- any(df==x)
  return(present)
}

#run check for vals in df
present_list <- lapply(list_vals, pmt_present)

#create df of results
present_df <- as.data.frame(cbind(list_vals, present_list))

我的代码整晚都在运行,当我停止它时,它抛出了以下错误
Error in base::try(sample_long_mutate, silent = TRUE) : object 'sample_long_mutate' not found
但它在小例子中工作得很完美。

yvgpqqbh

yvgpqqbh1#

%in%unlist沿着使用

> unlist(list_vals) %in% unlist(df)
[1] TRUE TRUE TRUE TRUE
6vl6ewon

6vl6ewon2#

或者也可以做

list_vals %in% t(df)
[1] TRUE TRUE TRUE TRUE

相关问题