使用用户定义的函数在R中创建一个新列



我正在尝试对一列进行模式匹配,并使用用户定义的函数用匹配模式的一部分创建一个新列。

表名为数据,包含

MatchedColumn
24 abcd
32 gcef
45 lmno

代码为

f4<-function()
{
data$NewColumn <- gsub('([0-9]{2}) *','\1',data$MatchedColumn)
}

我将函数调用为f4(),但它并没有执行函数的内部。

但当我单独运行下面的行时,它在匹配后创建了一个新列,生成的表如图所示。

data$NewColumn <- gsub('([0-9]{2}) *','\1',data$MatchedColumn)

数据:

MatchedColumn  NewColumn
24 abcd         24
32 gcef         32
45 lmno         45

我尝试使用用户定义的函数,因为我想通过函数传递NewColumn

MatchedColumn如果有人知道怎么做,请帮忙!

有几个选项:

  • 您可以将数据作为参数传递给函数

    f4<-function(data, col1, col2)
    {
    data[,col1] <- sapply(data[col2], function(x)gsub("[^0-9]", "", x))
    return(data)
    }
    newdata <- f4(data, 'NewColumn', 'MatchedColumn')
    str(newdata)
    
  • 您可以使用<<-进行全局分配

    f4<-function(col1, col2)
    {
    data[col1] <<- sapply(data[col2], function(x)gsub("[^0-9]", "", x))
    }
    f4('NewColumn', 'MatchedColumn')
    

我肯定更喜欢的第一个选项

最新更新