【问题标题】:How to replace text with values from another text file in R?如何用 R 中另一个文本文件中的值替换文本?
【发布时间】:2021-09-18 11:50:53
【问题描述】:

我有一个带有不同参数的文本文件(本例中为 par1 到 par3)

 101    102    103    
 25     24     23      
 par1   par2     15      
 22     21     17      
 21     par3     18     
 22     30     19     

我想用另一个文本文件中的值替换所有参数值(par 1 到 par3)。 文本文件的结构如下所示,第一行是参数,第二行是值。

 par1    par2    par3    
 25     24     23    

我想用 R 中第二个文本文件中的值替换第一个文本文件中的参数。

【问题讨论】:

    标签: r search replace


    【解决方案1】:

    我们可以使用

    library(dplyr)
    df[] <- coalesce(as.character(unlist(df2)[as.matrix(df)]), c(as.matrix(df)))
    df <- type.convert(df, as.is = TRUE)
    

    -输出

    df
       v1  v2  v3
    1 101 102 103
    2  25  24  23
    3  25  24  15
    4  22  21  17
    5  21  23  18
    6  22  30  19
    

    数据

    df <- structure(list(v1 = c("101", "25", "par1", "22", "21", "22"), 
        v2 = c("102", "24", "par2", "21", "par3", "30"), v3 = c(103L, 
        23L, 15L, 17L, 18L, 19L)), class = "data.frame", row.names = c(NA, 
    -6L))
    
    df2 <- structure(list(par1 = 25L, par2 = 24L, par3 = 23L),
     class = "data.frame", row.names = c(NA, 
    -1L))
    

    【讨论】:

      【解决方案2】:

      您可以通过将替换创建为来自df2 的命名向量来使用str_replace_all。

      replacement <- setNames(as.character(unlist(df2)), names(df2))
      df1[] <- stringr::str_replace_all(as.matrix(df1), replacement)
      
      df1
      #   V1  V2  V3
      #1 101 102 103
      #2  25  24  23
      #3  25  24  15
      #4  22  21  17
      #5  21  23  18
      #6  22  30  19
      

      数据

      df1 <- read.table(text = '101    102    103    
      25     24     23      
      par1   par2     15      
      22     21     17      
      21     par3     18     
      22     30     19')   
      
      df2 <- read.table(text = 'par1    par2    par3    
       25     24     23', header = TRUE)   
      

      【讨论】:

        猜你喜欢
        • 2018-03-29
        • 2020-01-09
        • 1970-01-01
        • 2019-03-06
        • 2018-12-27
        • 1970-01-01
        • 1970-01-01
        • 2014-03-05
        • 1970-01-01
        相关资源
        最近更新 更多