17

下午好,

我正在尝试使用字母表在 R 中创建笛卡尔积。

我实际上正在尝试的是:

首先我用字母创建一个矩阵

a <- as.matrix(seq(97,122,by=1))

然后我创建一个包含所有组合的 2 列数据框

b <- expand.grid(a, a)

最后我结合了 2 列

apply(b,1,paste,collapse=" ")

我遇到的问题是我找不到将这些“小数”转换为其 Ascii 字符的方法。

我已经尝试了一些类似 rawToChar 和 gsub 的方法,但都没有成功。

有人可以指出我正确的方向吗?

谢谢

4

3 回答 3

25

根据 ASCII 码返回字符的一种非常简单的方法是函数intToUtf8。它也适用于包含多个整数的向量,并将相应的字符作为一个字符串返回。

vec <- 97:122
intToUtf8(vec)
# [1] "abcdefghijklmnopqrstuvwxyz"

intToUtf8(65)
# [1] "A"
于 2014-01-23T14:06:58.463 回答
4

第一种直接法:

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))
于 2013-03-02T21:04:20.887 回答
1

要在 R 中打印 ASCII 字符,您可以在 ASCII 码前使用print带有反斜杠的函数。\例如要打印相当于 150 的字符,请使用print("\150").

或者对于上面的示例,您可以尝试:

a <- sapply(97:122,function(x) rawToChar(as.raw(x)))

b <- expand.grid(a,a)

c <- t(apply(b,1,function(x) paste(x[1],x[2])))
于 2013-03-02T20:55:14.227 回答