我过去见过解决方案,但忘记了在哪里:是否有一个 R 函数可以将 x=1234 转换为其数字 (1,2,3,4),反之亦然?
Xi'an
问问题
194 次
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 回答