agrep 输出近似值
agrep output approximate macthing
拥有
agrep('timothy', c('timo','tim','timoth', 'timothys'), max.distance = 0.01, value=TRUE)
我想将原始字符串和所有可能的结果一起输出到数据框中,如下所示。
Original Replace1 Replace2
timothy timoth timothys
这是否可行或者是否有更好的功能可以使用?
我个人将其保留为 "long" 格式而不是宽格式(您以后可以随时对其进行转换):
data.frame(
original = "timothy",
replacement = agrep('timothy', c('timo','tim','timoth', 'timothys'), max.distance = 0.01, value=TRUE),
stringsAsFactors=FALSE
)
## original replacement
## 1 timothy timoth
## 2 timothy timothys
您可能想不止一次这样做,所以我将其作为一个函数。而且,由于 agrep()
可以 的输出是 character(0)
,我们需要处理它,所以我们也将添加一个辅助函数:
`%|l0%` <- function(x, y) if (length(x) == 0) y else x
agrep_to_data_frame <- function(pattern, x, max.distance=0.01, costs=NULL) {
data.frame(
original = pattern,
replacement = agrep(pattern, x, max.distance = max.distance, value=TRUE) %|l0% NA_character_,
stringsAsFactors=FALSE
)
}
而且,现在它是一个单一的调用,您可以在 purrr::map2()
或 mapply()
等中使用
agrep_to_data_frame('timothy', c('timo','tim','timoth', 'timothys'))
## original replacement
## 1 timothy timoth
## 2 timothy timothys
拥有
agrep('timothy', c('timo','tim','timoth', 'timothys'), max.distance = 0.01, value=TRUE)
我想将原始字符串和所有可能的结果一起输出到数据框中,如下所示。
Original Replace1 Replace2
timothy timoth timothys
这是否可行或者是否有更好的功能可以使用?
我个人将其保留为 "long" 格式而不是宽格式(您以后可以随时对其进行转换):
data.frame(
original = "timothy",
replacement = agrep('timothy', c('timo','tim','timoth', 'timothys'), max.distance = 0.01, value=TRUE),
stringsAsFactors=FALSE
)
## original replacement
## 1 timothy timoth
## 2 timothy timothys
您可能想不止一次这样做,所以我将其作为一个函数。而且,由于 agrep()
可以 的输出是 character(0)
,我们需要处理它,所以我们也将添加一个辅助函数:
`%|l0%` <- function(x, y) if (length(x) == 0) y else x
agrep_to_data_frame <- function(pattern, x, max.distance=0.01, costs=NULL) {
data.frame(
original = pattern,
replacement = agrep(pattern, x, max.distance = max.distance, value=TRUE) %|l0% NA_character_,
stringsAsFactors=FALSE
)
}
而且,现在它是一个单一的调用,您可以在 purrr::map2()
或 mapply()
等中使用
agrep_to_data_frame('timothy', c('timo','tim','timoth', 'timothys'))
## original replacement
## 1 timothy timoth
## 2 timothy timothys