There is a simple way将拉丁字母转换为希腊字母,使用适用于R的stringi
套餐,依赖于ICU的音译器:
library(stringi)
stri_trans_general("abcd", "latin-greek")
是否有类似的简单方法将拉丁语转换为古希腊语(αβγδ)而不是希腊语(ἀβκδ)?
答案 0 :(得分:2)
我想您要做的事情(至少,作为您的任务的一部分),是删除所有重音。
以下是使用stringi
进行此操作的方法。
library("stringi")
stri_flatten(
stri_extract_all_charclass(
stri_trans_nfkd(
stri_trans_general("abcd", "latin-greek")
),
"\\p{L}")[[1]]
)
## [1] "αβκδ"
首先,我们将stringi音译为希腊语。然后我们执行Unicode规范化NFKD - 这将重音字符分别分为字符和重音符号。接下来是时间提取所有字母并连接结果。 HTH
答案 1 :(得分:1)
现代和古希腊字母之间没有真正的区别。也许最大的一个是古希腊字母没有小写字母。所以αβγδ和ἀβκ都是现代希腊语(阿尔法的重音可能与发音有关,现代希腊语不再有它)。
现在,stri_trans_general
在尝试考虑发音时所做的是音译:
可发音:如果过程只是简单地映射字符而不考虑其发音,则音译不是很有用。简单地将“αβγδεζηθ...”映射到“abcdefgh ...”将产生可能完整且明确的字符串,但不能发音。 (见here)
音译有不同的标准,如ISO 843和UN(见here和here)。 c
可以音译为“κ”或“σ”,选择前者。
由于SO是关于编程的,如果你想制作自己的映射,这里有一些代码:
## You have to complete the mapping
map <- data.frame(latin = c("a", "b", "c", "d", "e", "f", " "),
greek = c("α", "β", "γ", "δ", "ε", "φ", " "),
stringsAsFactors=FALSE)
mapChars <- function(latin) {
a <- strsplit(latin, "")[[1]]
res <- sapply(a, function(x) map$greek[map$latin == x])
paste(res, sep="", collapse="")
}
mapChars("abcd")
## [1] "αβγδ"
希望这会对你有所帮助,
alex(或άλεξ)