我有一个正在做我想要的功能,但效率非常低,我想知道是否有更有效的方式来做到这一点。
我想要改进的是将数字分开并将数据保存到不同的变量中,然后对它们求和。 我的代码是:
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
希望你明白我的意思,谢谢你。
答案 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)
这种方法比使用字符串操作的方法快几个数量级。