【问题标题】:use sapply on a column of a data frame? - R在数据框的列上使用 sapply? -R
【发布时间】:2020-06-16 09:08:48
【问题描述】:

我有这个数据框:

df=data.frame("fg"=c("bv65","bv89"),"gh"=c(87,21))

我需要删除“fg”列中的子字符串“bv”。我是这样做的:

sapply(df$fg,FUN=gsub(pattern="bv",replacement = "",x=df$fg))

但我收到此错误:

match.fun(FUN) 中的错误: 'gsub(pattern = "bv", replacement = "", x = df$fg)' 不是函数、字符或符号

为什么?

【问题讨论】:

  • df$fg <- sub('bv', '', df$fg)

标签: r


【解决方案1】:

sub/gsub 是矢量化的。您可以将它们用于列中的所有值。也许,您可能还想将值转换为数字。

df$fg <- as.numeric(sub('bv', '', df$fg))
df
#  fg gh
#1 65 87
#2 89 21

【讨论】:

    【解决方案2】:

    Ronak 的解决方案是可行的方法,因为 gsub()/sub() 可以处理向量。但是,如果您想知道当前方法中缺少什么:

    sapply(df$fg, FUN = function(x) sub(pattern="bv", replacement="", x))
    # Or simply
    sapply(df$fg, sub, pattern="bv", replacement="")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-16
      • 1970-01-01
      • 2018-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多