2

我过去见过解决方案,但忘记了在哪里:是否有一个 R 函数可以将 x=1234 转换为其数字 (1,2,3,4),反之亦然?

4

2 回答 2

6
a <- c("1234")
res <- strsplit(a,"")
res
#[[1]]
#[1] "1" "2" "3" "4"

请注意,如果a是数字向量,则应首先将其转换为字符串。如果需要,您可以稍后将结果重新转换为数字。只要您离开res它最初返回的列表形式,以下命令就会为您执行此操作。

lapply(res,as.numeric)
#[[1]]
#[1] 1 2 3 4

res将包含一个列表,每个输入字符串都有一个项目,每个字符都分配给向量中自己的元素。在这种情况下,只有一个输入字符串,因此输出中只有一个列表项(包含一个向量)。

可以使用以下paste()函数进行反向操作:

a<-c(5,2,8,0)
paste(a,collapse="")

你可能想把它包paste起来as.numeric()

于 2013-04-29T18:35:48.687 回答
2

这是另一种可能性:

x <- 1234
as.numeric(sapply(sequence(nchar(x)), function(y) substr(x, y, y)))
# [1] 1 2 3 4

nchar告诉我们“字符串”有多少个字符。将其包裹起来会sequence生成我们需要的位置substr。将根据开始和结束位置在提取之前substr自动将您的输入转换为。character

于 2013-04-29T20:09:21.140 回答