r - R用大数字连接2个数字列
问题描述
我想用数字连接 2 列并得到一个数字。示例:第一列:123456 第二列:78910 所需结果:12345678910
test<-matrix(
c(328897771052600448,4124523780886268),
nrow=1,
ncol=2
)
test<-data.frame(test)
str(test)
两列都是数字
colnames(test)<-c("post_visid_high","post_visid_low")
test_2<-transform(test,visit_id=as.numeric(paste0(post_visid_high,post_visid_low)))
问题:我的连接结果给出:3.288977710526004289528e+33 我不明白为什么我得到这个(不正确的??)号码。
当我排除“as.numeric”时,我得到了正确的结果:
test_2<-transform(test,visit_id=paste0(post_visid_high,post_visid_low))
test_2
但它转换成“因素”:
str(test_2)
解决方案
这些数字太大而不能完全存储为numeric
. 您可以通过指定将它们存储为字符串stringsAsFactors = FALSE
:
test_2<-transform(test,visit_id=paste0(post_visid_high,post_visid_low), stringsAsFactors = FALSE)
test_2
#> post_visid_high post_visid_low visit_id
#> 1 3.288978e+17 4.124524e+15 3288977710526004484124523780886268
str(test_2)
#> 'data.frame': 1 obs. of 3 variables:
#> $ post_visid_high: num 3.29e+17
#> $ post_visid_low : num 4.12e+15
#> $ visit_id : chr "3288977710526004484124523780886268"
或者您使用类似gmp
处理任意大小的整数的方法:
library(gmp)
test_3 <- test
test_3$visit_id <- as.bigz(paste0(test_3$post_visid_high, test_3$post_visid_low))
test_3
#> post_visid_high post_visid_low visit_id
#> 1 3.288978e+17 4.124524e+15 3288977710526004484124523780886268
str(test_3)
#> 'data.frame': 1 obs. of 3 variables:
#> $ post_visid_high: num 3.29e+17
#> $ post_visid_low : num 4.12e+15
#> $ visit_id : 'bigz' raw 3288977710526004484124523780886268
推荐阅读
- sparql - 如何查找具有属性的 wikidata 条目
- jwt - Java.auth0.jwt 的 JWT 令牌验证失败
- django - 为什么我的用户在将 is_Active 设置为 false 的情况下仍能登录?
- javascript - Rock, Paper, Scissors 使用 onclick 函数填充玩家结果
- object-detection - 关于 MS COCO 数据集评估!图片尺寸!(关于 COCO 数据集的问题。)
- android - 如何在android studio中为线性布局制作“波浪”边框?
- reactjs - 为什么这个事件监听器没有被移除?
- powershell - 在 Powershell 中重定向 WSL 输入
- firebase - Google Firebase Cloud Storage 高带宽成本
- android - 从后台执行Broadcast Receiver onReceive代码