首页 > 解决方案 > 如何处理R中的列表向量?

问题描述

我有一个 R 数据集,其中 DimB 由列表组成,例如:

DimA | DimB  | DimNew
Aa    [1,2,3]   Yes
Ab    [4,5,6]   
Ac    [1,7,8]   Yes

我想迭代 DimB 中的每个列表,并且 DimB 中的列表包含 1,返回“是”,否则返回“否”。

我尝试了以下方法,但没有那么幸运

dataset <- mutate(dataset, DimNew = if(dataset$DimB %in% 1){"Yes"})

标签: r

解决方案


尝试:

    library(dplyr)
    set.seed(0)
    l=(lapply(1:5,function(x){sample(10,3)}))
    dataset <- data.frame(dimB=I(l))
    dataset <- dataset %>% mutate(DimNew = lapply(dimB, function(x) { ifelse(1 %in% x,"Yes","")}))
    dataset
    #>      dimB DimNew
    #> 1 9, 4, 7       
    #> 2 1, 2, 5    Yes
    #> 3 7, 2, 3       
    #> 4 3, 1, 5    Yes
    #> 5 5, 6, 9

<sup>Created on 2020-08-09 by the [reprex package](https://reprex.tidyverse.org) (v0.3.0)</sup>

推荐阅读