以下是我的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
数据集?
答案 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
}
}
比我们得到的