R:拆分数字字符串

use*_*247 3 string r strsplit

我正在尝试拆分40位数字的字符串(即拆分1234567891234567891234567891 2 3 4等)

遗憾的是strsplit它不起作用,因为它需要字符,并且使用转换字符串as.character不起作用,因为它非常长并且R自动切断长数字的小数(最大值为22位小数).因此,我最终得到"1.2345e+35"一个字符串,而不是完整的数字.

是否存在strsplit十进制截止问题的数字变体或解决方法?我似乎无法在stackoverflow上找到答案,但如果之前已经回答过,请道歉.提前致谢!

Mar*_*ler 5

如果R正在计算数字,我不知道解决方案.如果数字在数据文件中,我认为下面的代码可能有效.虽然,如果数字在数据文件中,则可能有更容易的解决方案.

a1 <- read.table("c:/users/Mark W Miller/simple R programs/long_number.txt", colClasses = 'character')

# a1 <- c('1234567891234567891234567891234567891234') ;

a1 <- as.character(a1) ;
a2 <- strsplit(a1, "") ;
a3 <- unlist(a2) ;
a4 <- as.vector(as.numeric(a3)) ;
a4
# [1] 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4
Run Code Online (Sandbox Code Playgroud)

编辑

我意识到我可能不理解这个问题,我的回答可能很愚蠢.然而,如果你有一个非常长的整个数据集,你可以使用下面的代码分割所有数据.请注意,文件'three_long_numbers.txt'中没有引号,数据以数字开头:

a1 <- read.table("c:/users/Mark W Miller/simple R programs/three_long_numbers.txt", colClasses = 'character')
a1

#      V1                                        
# [1,] "1234567891234567891234567891234567891234"
# [2,] "1888678912345678912345678912345678912388"
# [3,] "1234999891234567891234567891234567891239"

# a1 <- matrix(c(
# "1234567891234567891234567891234567891234",
# "1888678912345678912345678912345678912388",
# "1234999891234567891234567891234567891239"), nrow=3, byrow=T)

a1 <- as.matrix(a1) ;
a2 <- strsplit(a1, "") ;
a3 <- unlist(a2) ;
a3 <- as.numeric(a3) ;
a4 <- matrix(a3, nrow=dim(a1)[1], byrow=T)
a4
Run Code Online (Sandbox Code Playgroud)