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です。また、複数の整数を含むベクトルに対しても機能し、対応する文字を1つの文字列として返します。

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 に答える