检查R中数据框中的值

时间:2019-02-13 17:36:38

标签: r dataframe if-statement

以下是我的r代码。我正在尝试检查是否包含真实值a = 10或该数据帧中。如果它包含在数据帧中,那么我需要计算该数据帧的长度,否则我想分配长度0

假设我要检查的值为10

k1 = c(1,2,3,5,6) 
k2 = c(10,12,13,15,16,18)  

例如,对于k1集,我想获得长度0,而对于k2,长度必须为6

我试图使用以下代码来完成这项工作

library(tidyverse)
map_lgl(k, `%in%`, x = 10) %>% length

为什么它不适用于k1数据集?

2 个答案:

答案 0 :(得分:3)

您可以使用简单的ifelse语句来完成此操作-无需其他操作。

a <- 10
ifelse(a %in% k2, length(k2), 0)

[1] 0

您可以包装一个函数,然后将不同的集合输入以下内容:

my_func <- function(x){
ifelse(a %in% x, length(x), 0)
}

my_func(k2)

[1] 6

答案 1 :(得分:1)

如果您有更多的K(i)列表(例如100个),并且需要与所有列表进行交互,则可以使用循环并将结果存储在简历表中。

我从未见过map_lgl,但是我们可以使用R的〜硬代码〜,

k1 <- c(1,2,3,5,6) 
k2 <- c(10,12,13,15,16,18)  

results <- data.frame()

for(i in 1:2){

  analysis <- get(paste("k",i,sep=""))

  if(10 %in% analysis){
    results[nrow(results)+1, 1] <- paste("k",i,sep="")
    results[nrow(results), 2] <- length(analysis)
  } else{
    results[nrow(results)+1, 1] <- paste("k",i,sep="")
    results[nrow(results), 2] <- 0
  }

}

比我们得到的

enter image description here