【问题标题】:How to remove a character in specific columns in a data.frame with R?如何使用R删除data.frame中特定列中的字符?
【发布时间】:2019-05-24 13:04:18
【问题描述】:

我有几个 data.frames 的列表 results(每个 data.frame 有 3 列)。它看起来像这样:

> tail(results[[1]])
                    var1                var2        corr
4945 UniRef90_A0A075GGL3 UniRef90_A0A075GGW4 -0.12058932
4946 UniRef90_A0A075GGU1 UniRef90_A0A075GGW4 -0.01740142
4947 UniRef90_A0A075GGU4 UniRef90_A0A075GGW4  0.16400148
4948 UniRef90_A0A075GGV0 UniRef90_A0A075GGW4 -0.09698018
4949 UniRef90_A0A075GGV1 UniRef90_A0A075GGW4  0.22409572
4950 UniRef90_A0A075GGV8 UniRef90_A0A075GGW4  0.43184873

> tail(results[[2]])
                    var1                var2       corr
4945 UniRef90_A0A075GJW0 UniRef90_A0A075GKB8 -0.1059095
4946 UniRef90_A0A075GJW5 UniRef90_A0A075GKB8 -0.4336370
4947 UniRef90_A0A075GJX5 UniRef90_A0A075GKB8 -0.1875841
4948 UniRef90_A0A075GJY4 UniRef90_A0A075GKB8  0.2658149
4949 UniRef90_A0A075GJY8 UniRef90_A0A075GKB8 -0.2820792
4950 UniRef90_A0A075GJY9 UniRef90_A0A075GKB8 -0.2402827

我会将这些 data.frames 绑定到一个中。但这会产生一个巨大的data.frame。这就是为什么我想在绑定之前删除var1var2 列中的字符串UniRef90_ 以减小大小。

有什么帮助吗?

【问题讨论】:

    标签: r string dataframe


    【解决方案1】:

    您可以在弯曲数据帧之前在 var1 和 var2 上尝试此操作。

    sub("UniRef90_","", dataframe$yourvariable)
    

    【讨论】:

    • 它不起作用。实际上,我有很多 data.frames。我只展示了其中两个。
    【解决方案2】:

    我们可以遍历list,并删除带有substringstr_remove 的子字符串

    library(tidyverse)
    map_df(results, ~ .x %>%
                       mutate_at(vars(matches('^var\\d+$')),
                  list(~ str_remove(., "^UniRef90_"))))
    #     var1       var2        corr
    #1  A0A075GGL3 A0A075GGW4 -0.12058932
    #2  A0A075GGU1 A0A075GGW4 -0.01740142
    #3  A0A075GGU4 A0A075GGW4  0.16400148
    #4  A0A075GGV0 A0A075GGW4 -0.09698018
    #5  A0A075GGV1 A0A075GGW4  0.22409572
    #6  A0A075GGV8 A0A075GGW4  0.43184873
    #7  A0A075GJW0 A0A075GKB8 -0.10590950
    #8  A0A075GJW5 A0A075GKB8 -0.43363700
    #9  A0A075GJX5 A0A075GKB8 -0.18758410
    #10 A0A075GJY4 A0A075GKB8  0.26581490
    #11 A0A075GJY8 A0A075GKB8 -0.28207920
    #12 A0A075GJY9 A0A075GKB8 -0.24028270
    

    数据

    results <- list(structure(list(var1 = c("UniRef90_A0A075GGL3", 
      "UniRef90_A0A075GGU1", 
    "UniRef90_A0A075GGU4", "UniRef90_A0A075GGV0", "UniRef90_A0A075GGV1", 
    "UniRef90_A0A075GGV8"), var2 = c("UniRef90_A0A075GGW4", 
     "UniRef90_A0A075GGW4", 
    "UniRef90_A0A075GGW4", "UniRef90_A0A075GGW4", "UniRef90_A0A075GGW4", 
    "UniRef90_A0A075GGW4"), corr = c(-0.12058932, -0.01740142, 0.16400148, 
    -0.09698018, 0.22409572, 0.43184873)), class = "data.frame", row.names = c("4945", 
    "4946", "4947", "4948", "4949", "4950")), 
     structure(list(var1 = c("UniRef90_A0A075GJW0", 
    "UniRef90_A0A075GJW5", "UniRef90_A0A075GJX5", "UniRef90_A0A075GJY4", 
    "UniRef90_A0A075GJY8", "UniRef90_A0A075GJY9"), var2 = c("UniRef90_A0A075GKB8", 
    "UniRef90_A0A075GKB8", "UniRef90_A0A075GKB8", "UniRef90_A0A075GKB8", 
    "UniRef90_A0A075GKB8", "UniRef90_A0A075GKB8"), corr = c(-0.1059095, 
    -0.433637, -0.1875841, 0.2658149, -0.2820792, -0.2402827)),
    class = "data.frame", row.names = c("4945", 
    "4946", "4947", "4948", "4949", "4950")))
    

    【讨论】:

      猜你喜欢
      • 2016-07-09
      • 1970-01-01
      • 2013-01-21
      • 2023-02-01
      • 2022-08-16
      • 2021-10-05
      • 2014-03-05
      • 1970-01-01
      • 2012-01-15
      相关资源
      最近更新 更多