string - R:分割数字字符串

标签 string r strsplit

我正在尝试拆分 40 位数字字符串(即将 123456789123456789123456789 拆分为 1 2 3 4 等)

不幸的是 strsplit 不起作用,因为它需要字符,并且使用 as.character 转换字符串不起作用,因为它很长,R 会自动切断长数字的小数位(最多 22 位小数)。因此,我最终将 "1.2345e+35" 作为字符串,而不是完整的数字。

是否有 strsplit 的数字变体,或解决小数点截止问题的方法?我似乎无法在 stackoverflow 上找到答案,但如果之前已经回答过,我深表歉意。提前致谢!

最佳答案

如果 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

编辑

我意识到我可能不明白这个问题,我的回答可能很愚蠢。尽管如此,如果您有一个由非常长的数字组成的完整数据集,您可以使用下面的代码将它们全部拆分。请注意,文件“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

关于string - R:分割数字字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10871525/

相关文章:

c - 根据另一个数组的大小分配 C 数组

Python:删除集合中字符串的较长子字符串

r - 如何在圆面环绕y轴上设置限制?

R 查找两个美国邮政编码列之间的距离

r - 使用 strsplit 分割字符串并为分割的一部分创建一个新向量

C++ 从字符串中提取两个引号

c - 为 C 字符串编写正则表达式

r - 在 R 中使用 jsonlite 时,如何指定仅将某些条目视为数组?

python - rsplit() 无法使用正则表达式拆分列

regex - R在data.frame中获取双/三重姓氏的首字母