【问题标题】:Creating a function in r to change string values在 r 中创建一个函数来更改字符串值
【发布时间】:2021-03-24 09:03:08
【问题描述】:

我一直在尝试在 R 中创建一个可以让我更改字符串值的函数:

例如,我的数据框中有条目“12”,我想使用 function() 将这些值更改为“1-2”,然后使用 apply() 将它们应用于我的数据框

我试过了:

mistake_fix<- function() {

df$column1<-  replace(column1, "12", "1-2")


df$column1<- replace(column1, "67", "6-7")

}

然后将其应用到我的数据框

%>% apply(MARGIN =2, FUN= mistake_fix)

显然有问题,因为 r 一直告诉我它找不到对象“column1” 谁能帮帮我?

【问题讨论】:

  • 你试过apply(df, 2, function(x) gsub("12", "1-2", x))吗?

标签: r string replace dplyr


【解决方案1】:

你可以试试gsub:

mistake_fix <- function(x) gsub("67", "6-7", gsub("12", "1-2", x))

apply(df, 2, mistake_fix)

【讨论】:

  • 你是救生员!我一直在玩弄 gsub,但它一直把我的数据框变成一个向量,我只是把它转换回来,现在它工作得很好。再次感谢!
  • 我赞成 +1,因为它是使用 gsub() 避免 ifelse 或 case_when 等条件的更实用的方法。太棒了!
【解决方案2】:

您可以尝试使用case_when 替换多个此类值。

mistake_fix<- function(column1) {
  dplyr::case_when(column1 == '12' ~ '1-2', 
                   column1 == '67' ~ '6-7')
}

然后将该函数应用于所有列。

df[] <- lapply(df, mistake_fix)

【讨论】:

    【解决方案3】:

    我们可以更改函数以向函数添加参数,然后在apply中使用它

    mistake_fix<- function(x) {
         x <- replace(x, "12", "1-2")
        x <- replace(x, "67", "6-7")
       return(x)
    
        }
    
    apply(df, 2, mistake_fix)
    

    【讨论】:

      猜你喜欢
      • 2020-08-11
      • 2020-07-15
      • 2021-10-07
      • 1970-01-01
      • 2012-06-19
      • 2021-02-16
      • 1970-01-01
      • 2023-01-12
      • 1970-01-01
      相关资源
      最近更新 更多