使用管道获取列名称

我正在尝试使用R中的命名管道获取NA列的列名:-

    <html>
    <head>
        <title>ZimEdu</title>
        <link rel="icon" href="img/icon.png">
    </head>
    <body>
    `@include('inc/header')`

    `@yield('content')`

    `@include('inc/footer')`

        <script type="text/javascript" src="{{ url('js/jquery.min.js')}}"></script> 
        <script type="text/javascript" src="{{ url('js/admin_portal.js')}}"></script>
        <script type="text/javascript" src="{{ url('js/query.js')}}"></script>

        <script type="text/javascript" src="{{ url('js/popper.min.js')}}"></script>
        <script type="text/javascript" src="{{ url('js/bootstrap.bundle.min.js')}}"></script>

    </body>
    </html>

但是代码给出了错误。 paste0(。,NulCols

只想使用命名管道创建NA列的列表。

sothis2000 回答:使用管道获取列名称

对于您给出的示例,可以使用pull来获取列名,如下所示;

library(dplyr)
df <- structure(data.frame(id = c(1,2,NA,NA),cat = c("SS","SS","SV","SV"),val = c(220L,222L,223L,2206L)),.Names = c("id","cat","val"),class = "data.frame",row.names = c(NA,-6L))

sapply(df,function(x) ((sum(is.na(x))))*.01) %>%
  stack %>% 
  rev %>% 
  filter(values > 0) %>% 
  setNames(nm = c("variable","missing")) %>%
  pull(variable) %>%
  as.character(.) -> NulCols

通常,如果您只想获取包含任何NA的列的名称,则可以使用一种简单得多的方法使用Base R进行操作,虽然有很多方法,但是您可以使用其中一些;

# Method 1
colnames(df)[!complete.cases(t(df))]

# Method 2
names(df)[sapply(df,anyNA)]

# Method 3
names(df)[!!colSums(is.na(df))]

如果使用管道对您来说是必不可少的,那么您也可以使用类似的东西;

df %>% 
  select_if(function(x) any(is.na(x))) %>%
  colnames(.) -> NulCols
本文链接:https://www.f2er.com/3155557.html

大家都在问