R 如何将向量转换为单个数字

R 如何将向量转换为单个数字,r,vector,R,Vector,假设我有一个向量x,它是 x = c(1,2,3,4,5) 我希望它有一个向量中所有数字的单一长度,这样最终结果如下所示: x = 12345 如果我想把它乘以2,它会显示:12345*2=24690 而不是:1,2,3,4,5*2=2,4,6,8,10 有什么简单的方法吗?也许你可以试试 > sum(x*10**rev(seq_along(x)-1))*2 [1] 24690 或者是@Roland的变体 > 2 * x %*% (10 ^ rev(seq_along(x))

假设我有一个向量
x
,它是

x = c(1,2,3,4,5)
我希望它有一个向量中所有数字的单一长度,这样最终结果如下所示:

x = 12345
如果我想把它乘以2,它会显示:
12345*2=24690

而不是:
1,2,3,4,5*2=2,4,6,8,10

有什么简单的方法吗?

也许你可以试试

> sum(x*10**rev(seq_along(x)-1))*2
[1] 24690
或者是@Roland的变体

> 2 * x %*% (10 ^ rev(seq_along(x)) / 10
[1] 24690
或定义函数
f
如下

f <- function(x, l = length(x)) ifelse(l==1,x,f(x[1:(l-1)],l-1)*10 + x[l])
> f(x)*2
[1] 24690

另一个带有
Reduce()的选项


您可以使用
nchar
cumprod
获取数字,
rev
将其反转,并使用
%*%
将其相乘和求和

rev(x) %*% cumprod(c(1, 10^nchar(rev(x[-1]))))
#      [,1]
#[1,] 12345

rev(x) %*% cumprod(c(1, 10^nchar(rev(x[-1])))) * 2
#      [,1]
#[1,] 24690
对于超过1位的数字:

x <- c(1, 22, 333)
rev(x) %*% cumprod(c(1, 10^nchar(rev(x[-1]))))
#       [,1]
#[1,] 122333

x使用
粘贴
折叠

as.numeric( paste(x, collapse=''))
#[1] 12345

纯溶液,含
减少
,+1@谢谢你的回复。其实我更喜欢你的答案。我的帖子只是一个可能效率较低的替代方案+1.您的第一个解决方案比在字符串上绕道要好得多。变化量为
x%*%(10^rev(沿(x)方向的顺序))/10)
x <- c(1, 22, 333)
rev(x) %*% cumprod(c(1, 10^nchar(rev(x[-1]))))
#       [,1]
#[1,] 122333
as.numeric( paste(x, collapse=''))
#[1] 12345