更有效的方法来分离r中的数字?

时间:2014-10-29 14:47:38

标签: r

我有一个正在做我想要的功能,但效率非常低,我想知道是否有更有效的方式来做到这一点。

我想要改进的是将数字分开并将数据保存到不同的变量中,然后对它们求和。 我的代码是:

indep <- as.numeric()
first <- as.numeric()
sec <- as.numeric()
third <- as.numeric()
for(i in 1:nmat){
  first[i] <- as.numeric(substr(matrix[i], 1, 1))
  sec[i] <- as.numeric(substr(matrix[i],3, 3))
  third[i] <- as.numeric(substr(matrix[i], 4, 4))
  indep[i] <- sum(first[i],sec[i],third[i],na.rm=T)
}



> For example if I have the numbers(234,361) 
>     I want in first->(2,3), 
>     in second->(3,6), 
>     third->(4,1) and in
>     ind->(2+3+4=9,3+6+1=10)
  

数字超过6位且有一点像1.923442334,   数据也是一个大矩阵NxN

希望你明白我的意思,谢谢你。

1 个答案:

答案 0 :(得分:2)

如果数字各有三位数,则可以避免字符串操作并使用基本算术。例如:

    numbers<-c(234,361)
    #this will give you a matrix in which each column has the digits of each number
    myMatrix<-matrix((rep(numbers,each=3) %/% 10^(2:0))%%10,nrow=3)
    #obtain the sum of the digits:
    colSums(myMatrix)

这种方法比使用字符串操作的方法快几个数量级。