我正在尝试对列进行模式匹配,并使用用户定义的函数创建一个包含匹配模式的一部分的新列。
表名是数据,它包含
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(NewColumn,MatchedColumn)
如果有人知道怎么做,请帮忙!
答案 0 :(得分:0)
有几种选择:
您可以将数据作为参数传递给函数
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')
我肯定更喜欢第一个选项