下午好,
我正在尝试使用字母表中的字母在R中创建笛卡尔积。
我实际上在尝试的是:
首先,我创建一个带字母
的矩阵a <- as.matrix(seq(97,122,by=1))
然后我创建一个包含2列所有组合的数据框
b <- expand.grid(a, a)
最后我结合了两列
apply(b,1,paste,collapse=" ")
我遇到的问题是我无法找到将这些“小数”转换为其Ascii字符的方法。
我尝试了几个像rawToChar和gsub这样的事情。
有人能指出我正确的方向吗?
由于
答案 0 :(得分:21)
基于ASCII码返回字符的一种非常简单的方法是函数intToUtf8
。它也适用于包含多个整数的向量,并将相应的字符作为一个字符串返回。
vec <- 97:122
intToUtf8(vec)
# [1] "abcdefghijklmnopqrstuvwxyz"
intToUtf8(65)
# [1] "A"
答案 1 :(得分:3)
第一种直接方法:
res <- do.call(paste, expand.grid(letters, letters))
如果您有其他一些ascii值,并且想要获得等效字符:
val <- 65:96 # whatever values you want the equivalent characters for
mode(val) <- "raw" # set mode to raw
# alternatively, val <- as.raw(65:96)
a <- sapply(val, rawToChar)
res <- do.call(paste, expand.grid(a, a))
答案 2 :(得分:1)
要在R中打印ASCII字符,您可以在ASCII代码编号之前使用带有反斜杠print
的{{1}}函数。例如,要打印相当于150的字符,请使用\
。
或者您可以尝试上面的示例:
print("\150")