将单词转换为数字的函数
A function to convert words to numbers
我发现了这个函数,它可以将用文字书写的数字转换成它的数字表示形式(例如,5 到 5)。该函数如下所示:
library(english)
words_to_numbers <- function(s) {
s <- stringr::str_to_lower(s)
for (i in 0:11)
s <- stringr::str_replace_all(s, words(i), as.character(i))
s
}
你能解释一下这个函数是如何工作的吗?我很困惑 as.character()
在这里如何发挥作用。
这个函数是这样工作的(注意你还需要 stringr
包)。
首先,它接受您输入的单词(即 "five"
如果您使用 words_to_numbers("five")
)
然后,str_to_lower()
接受它并将其规范化为所有小写(即,如果您键入 "Five"
或 "FIVE"
而不是 [=11,则避免出现问题=]).
然后遍历一个循环(出于某种原因以 11 结尾),因此 i
将取 1
的值,然后 2
,然后3
,一直到11
.
在循环中,str_replace_all()
获取您的字符串(即 "five"
)并查找匹配模式。这里,模式是 words(i)
(即 words(5)
当 i == 5
产生模式 "five"
- 在 english
包中, words()
函数提供了一个表示向量中位置的单词的向量。例如,如果您键入 english::words(1000)
,它将 return "one thousand"
。一旦找到模式,它就会用 [=32= 替换它]。as.character()
函数将数字 i
值转换为字符,因为 str_replace_all()
需要字符替换。如果您需要 return 值是数字,您可以使用 as.numeric(words_to_numbers("five"))
出于某种原因,该函数在 11 处停止,这意味着如果您键入 words_to_numbers("twelve")
,它将不起作用(returns“十二”)。因此,如果要对大于 11 的值使用该函数,则需要调整该数字。
希望这对您有所帮助,祝您学习 R 顺利!
我发现了这个函数,它可以将用文字书写的数字转换成它的数字表示形式(例如,5 到 5)。该函数如下所示:
library(english)
words_to_numbers <- function(s) {
s <- stringr::str_to_lower(s)
for (i in 0:11)
s <- stringr::str_replace_all(s, words(i), as.character(i))
s
}
你能解释一下这个函数是如何工作的吗?我很困惑 as.character()
在这里如何发挥作用。
这个函数是这样工作的(注意你还需要 stringr
包)。
首先,它接受您输入的单词(即
"five"
如果您使用words_to_numbers("five")
)然后,
str_to_lower()
接受它并将其规范化为所有小写(即,如果您键入"Five"
或"FIVE"
而不是 [=11,则避免出现问题=]).然后遍历一个循环(出于某种原因以 11 结尾),因此
i
将取1
的值,然后2
,然后3
,一直到11
.在循环中,
str_replace_all()
获取您的字符串(即"five"
)并查找匹配模式。这里,模式是words(i)
(即words(5)
当i == 5
产生模式"five"
- 在english
包中,words()
函数提供了一个表示向量中位置的单词的向量。例如,如果您键入english::words(1000)
,它将 return"one thousand"
。一旦找到模式,它就会用 [=32= 替换它]。as.character()
函数将数字i
值转换为字符,因为str_replace_all()
需要字符替换。如果您需要 return 值是数字,您可以使用as.numeric(words_to_numbers("five"))
出于某种原因,该函数在 11 处停止,这意味着如果您键入 words_to_numbers("twelve")
,它将不起作用(returns“十二”)。因此,如果要对大于 11 的值使用该函数,则需要调整该数字。
希望这对您有所帮助,祝您学习 R 顺利!