Проверка значения в кадре данных в R - PullRequest
0 голосов
/ 13 февраля 2019

Ниже приведен мой код 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 голосов
/ 13 февраля 2019

Если у вас есть больше 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

0 голосов
/ 13 февраля 2019

Вы можете сделать это с помощью простого оператора 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...