Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 用大数字表示2个数字列_R_Concatenation - Fatal编程技术网

R 用大数字表示2个数字列

R 用大数字表示2个数字列,r,concatenation,R,Concatenation,我想用数字连接两列,并得到一个数字作为结果。 例子: 第一栏:123456 第二栏:78910 期望结果:12345678910 test<-matrix( c(328897771052600448,4124523780886268), nrow=1, ncol=2 ) test<-data.frame(test) str(test) 这些数字太大,无法准确地存储为数字。您可以通过指定stringsAsFactors=FALSE将它们存储为字符串: test_2&l

我想用数字连接两列,并得到一个数字作为结果。 例子: 第一栏:123456 第二栏:78910 期望结果:12345678910

test<-matrix(
  c(328897771052600448,4124523780886268),
  nrow=1,
  ncol=2
)

test<-data.frame(test)

str(test)

这些数字太大,无法准确地存储为
数字
。您可以通过指定
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"

这些数字太大,无法准确地存储为
数字
。您可以通过指定
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"

as.numeric()
给出的答案是正确的。只是打印的数字小于数字<代码>打印(测试2,数字=20)
可以显示存储的内容。虽然这还没有揭示一切。尝试使用较小的数字,您将看到
为。numeric
给出了正确的值,但数字之间的差异有多大?单个数字328897771052600448在组合数字中转换为328897771052600428(请参见最后两个密码“28”而不是“48”)。为什么是“28”?由
as.numeric()
给出的答案是正确的。只是打印的数字小于数字。
打印(测试2,数字=20)
可以显示存储的内容。尽管这仍然不能显示所有内容。尝试使用较小的数字,您将看到
as.numeric
给出了正确的值,但数字之间的差异有多大?单个数字328897771052600448在组合数字中转换为328897771052600428(请看最后两个密码“28”而不是“48”)。为什么是“28”?
str(test_2)
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"
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