当前位置: 首页 > 知识库问答 >
问题:

在映射内部使用starts_with,而不是显式命名

邓俊材
2023-03-14

我想在tibble中应用函数,但不想显式地命名列。例如。

library(tidyverse)
library(tidyselect)
test = tibble(var1 = c("la", "le", "lu"), var2 = c("ma", "me", "mu"), var3 = c("fi", "fa", "fu"), dummy=1)
with_funct = test %>% mutate(blub = pmap_chr(list(var1, var2, var3), paste, sep='+'))

我得到了预期的结果:

# A tibble: 3 x 5
  var1  var2  var3  dummy blub    
  <chr> <chr> <chr> <dbl> <chr>   
  1 la    ma    fi        1 la+ma+fi
  2 le    me    fa        1 le+me+fa
  3 lu    mu    fu        1 lu+mu+fu

但是,与其编写列表(var1,var2,var3),我宁愿使用starts_with(“var”),但这不起作用。

所以如果我用

with_funct = test %>% mutate(blub = pmap_chr(starts_with("var"), paste, sep='+'))

我得到一个

"错误:没有注册tidyselect变量"

我将感激任何帮助。

共有2个答案

章晗日
2023-03-14

试试这个:

with_funct2 = test %>% mutate(blub = pmap_chr(test %>% select(starts_with("var")), paste, sep='+'))

希望有帮助

金阳曜
2023-03-14

您可以在pmap_chr()中使用select()来处理以“var”开头的列。我使用点来引用mutate()中使用的数据集。

这样做的一个原因是因为pmap()在tibble中按行工作。我使用它的方式是,列在函数中按它们在数据集中出现的顺序使用(在您的情况下是粘贴())。

test %>% 
    mutate(blub = pmap_chr(select(., starts_with("var")), paste, sep='+'))

# A tibble: 3 x 5
  var1  var2  var3  dummy blub    
  <chr> <chr> <chr> <dbl> <chr>   
1 la    ma    fi        1 la+ma+fi
2 le    me    fa        1 le+me+fa
3 lu    mu    fu        1 lu+mu+fu
 类似资料:
  • 我正在从事一个严重依赖泛型类型的项目。其关键组件之一是所谓的TypeToken,它提供了一种在运行时表示泛型类型并在其上应用一些实用函数的方法。为了避免Java的类型擦除,我使用了花括号表示法()来创建一个自动生成的子类,因为这使类型可重新定义。 这是TypeToken的一个非常简化的版本,比最初的实现要宽松得多。然而,我正在使用这种方法,因此我可以确保真正的问题不在于这些效用函数之一。 基本上,

  • XML示例: 然后我有POJO类,例如:(带有lombokgetter/setter/toString和jackson注释导入) 然后使用MappingJackson2XmlHttpMessageConverter获取对象映射器,并使用该映射器将XML字符串映射到示例类。 这将产生一个具有以下内容的示例类: 我希望member1为null,而不是空字符串。我怎样才能完成这件事呢?

  • 我有基类orderItem并且有子类DeviceItem和ServiceItem。我提供了下面的定义。当我收到这个请求时,我执行dozer映射以将jaxb模型转换为我创建的另一个数据模型。我的数据模型也有相同的OrderItem、DerviceItem和DeviceItem类,它们是POJO。当我进行dozer映射时,类会映射到OrderItem(基类)而不是专门的子类。有没有办法执行此用户doz

  • 我正在运行Elasticsearch版本1.5.2。Logstash版本1.5.4。 大多数logstash设置都是默认的: 我检查了映射“http://localhost:9200/logstash-2015.09.15?pretty”,并且geoip.location映射为double而不是geo_point。 有什么建议如何正确地映射这个? 更多信息:

  • 目前,我正在映射一个命名空间,通过创建一个包的package-info.java文件与以下注释。 正如您所看到的,我的一个命名空间没有前缀,而另一个命名空间有前缀,这目前是有效的,但我想要另一种映射命名空间的方式,而不必创建单独的文件,任何人都知道我如何将命名空间映射放在类中的注释旁边? 在我的XML中,名称空间声明位于根元素中,如下所示: 我的类声明和注释类似于根元素的下面。 谢谢

  • 本地风险值背后的想法是最终的,而领域不是。