Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/73.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 为什么Scipen=999会完全改变数字?_R_Scientific Notation - Fatal编程技术网

R 为什么Scipen=999会完全改变数字?

R 为什么Scipen=999会完全改变数字?,r,scientific-notation,R,Scientific Notation,我有一个很长(273位)的二进制数字集的csv。 当我在R中导入时,它会将其更改为科学符号,这对我使用的包(RMark包)没有好处 我需要一串精确的数字。当我执行选项(scipen=999)时,它会更改字符串 0000100000010100010001000000000000010000000000100000100000000000001000000000001000010000000000010000000100000000000000000000000000000000101100000

我有一个很长(273位)的二进制数字集的csv。 当我在R中导入时,它会将其更改为科学符号,这对我使用的包(RMark包)没有好处

我需要一串精确的数字。当我执行选项(scipen=999)时,它会更改字符串

0000100000010100010001000000000000010000000000100000100000000000001000000000001000010000000000010000000100000000000000000000000000000000101100000000000000000000000000000000000000000000001000000000000000000000000010111010001000000000000000000001000000001001000000000000000000001000100000000000000000000000000000100000001100000000000000000000000000000

1000000100101025444402400842264066484822600084686488860622084686800026026866666620228640024800662200404662066606842460420682026606666882002660642200422860660644224866408486660604006268844664848660660204240488628044266608646066666666868042486662860

(此字符串中有非二进制数字,它们在.csv文件中肯定不存在)

如果我以字符形式读取.csv,则字符串将按预期显示,但如果我随后更改为as.numeric(因为我需要r将字符串识别为数字),它将恢复为科学符号

我也试过了

format(data$ch, scientific=F)
但它仍然保留了科学的符号。 下面是我使用的数据结构和代码

rm(list = ls())
options(scipen=999)
data<-read.csv("test.csv")
head(data)



  > dput(data)
structure(list(X = structure(1:101, .Label = c("WS000", "WS010", 
"WS014", "WS018", "WS021", "WS030", "WS032", "WS041", "WS044", 
"WS052", "WS067", "WS071", "WS081", "WS087", "WS100", "WS102", 
"WS106", "WS108", "WS111", "WS113", "WS127", "WS132", "WS133", 
"WS141", "WS151", "WS157", "WS160", "WS167", "WS170", "WS171", 
"WS172", "WS173", "WS174", "WS175", "WS176", "WS177", "WS178", 
"WS179", "WS180", "WS183", "WS187", "WS189", "WS190", "WS192", 
"WS193", "WS195", "WS198", "WS199", "WS201", "WS202", "WS203", 
"WS206", "WS207", "WS209", "WS213", "WS214", "WS216", "WS217", 
"WS220", "WS221", "WS222", "WS224", "WS225", "WS227", "WS229", 
"WS230", "WS236", "WS262", "WS263", "WS266", "WS269", "WS270", 
"WS271", "WS273", "WS275", "WS276", "WS279", "WS285", "WS286", 
"WS288", "WS289", "WS290", "WS294", "WS295", "WS298", "WS300", 
"WS302", "WS314", "WS322", "WS326", "WS327", "WS328", "WS333", 
"WS335", "WS337", "WS338", "WS340", "WS350", "WS382", "WS383", 
"WS386"), class = "factor"), ch = c(1.0001000001001e+267, 1.0000001e+261, 
1e+130, 1.1100001001e+264, 1.00100001e+250, 1e+232, 1e+264, 1.000001e+232, 
1e+172, 1.11001e+259, 1e+254, 1.100110111001e+262, 1e+252, 1e+257, 
1.1001100001e+258, 1.000000001e+257, 1.0000000000011e+252, 1.010000001e+264, 
1.00000010100011e+270, 1e+207, 1.10110110001e+261, 1.0001001e+261, 
1.0000011000001e+261, 1.0000000000001e+258, 1.00110000001e+257, 
1.101e+242, 1.0000000011e+268, 1.1e+225, 1.0001000010111e+266, 
1e+203, 1.1e+245, 1.01001e+263, 1.0001e+257, 1.100000000001e+244, 
1.01e+263, 1.00000000100011e+271, 1.000000000001e+255, 1e+241, 
1.0011e+258, 1.000001100001e+260, 1e+169, 1.01e+174, 1.00000000001e+263, 
1e+271, 1.00001e+267, 1e+257, 1.00000000000001e+254, 1e+258, 
1e+159, 1e+151, 1.00110001e+261, 1.10011e+258, 1e+261, 1e+157, 
1.1e+245, 1.0001e+252, 1e+232, 1e+229, 1.00110010001001e+217, 
1e+188, 1.0001e+207, 1e+222, 1.1000110001011e+78, 1e+177, 1.00000000000001e+202, 
1e+226, 1.100011e+162, 1e+202, 1e+201, 1e+170, 1e+181, 1e+172, 
1.0000000010001e+170, 1e+172, 1e+85, 1e+152, 1.1e+166, 1.01e+160, 
1.00000000001e+89, 1.100010010011e+158, 1e+158, 1e+158, 1.01000000000001e+35, 
1e+134, 1e+143, 1.1e+133, 1e+69, 1.00100001e+74, 1e+84, 1e+73, 
1.0000011101e+72, 1e+73, 1e+69, 1e+66, 1e+66, 1e+66, 1e+51, 1.00000000000011e+33, 
1.00100100001e+28, 1e+28, 1e+26)), class = "data.frame", row.names = c(NA, 
-101L))
rm(list=ls())
选项(scipen=999)
数据dput(数据)
结构(列表X=结构(1:101,.Label=c(“WS000”,“WS010”),
“WS014”、“WS018”、“WS021”、“WS030”、“WS032”、“WS041”、“WS044”,
“WS052”、“WS067”、“WS071”、“WS081”、“WS087”、“WS100”、“WS102”,
“WS106”、“WS108”、“WS111”、“WS113”、“WS127”、“WS132”、“WS133”,
“WS141”、“WS151”、“WS157”、“WS160”、“WS167”、“WS170”、“WS171”,
“WS172”、“WS173”、“WS174”、“WS175”、“WS176”、“WS177”、“WS178”,
“WS179”、“WS180”、“WS183”、“WS187”、“WS189”、“WS190”、“WS192”,
“WS193”、“WS195”、“WS198”、“WS199”、“WS201”、“WS202”、“WS203”,
“WS206”、“WS207”、“WS209”、“WS213”、“WS214”、“WS216”、“WS217”,
“WS220”、“WS221”、“WS222”、“WS224”、“WS225”、“WS227”、“WS229”,
“WS230”、“WS236”、“WS262”、“WS263”、“WS266”、“WS269”、“WS270”,
“WS271”、“WS273”、“WS275”、“WS276”、“WS279”、“WS285”、“WS286”,
“WS288”、“WS289”、“WS290”、“WS294”、“WS295”、“WS298”、“WS300”,
“WS302”、“WS314”、“WS322”、“WS326”、“WS327”、“WS328”、“WS333”,
“WS335”、“WS337”、“WS338”、“WS340”、“WS350”、“WS382”、“WS383”,
“WS386”,class=“factor”),ch=c(1.000100001001e+267,1.0000001e+261,
1e+130、1.1100001E+264、1.00100001e+250、1e+232、1e+264、1.000001e+232、,
1e+172、1.11001e+259、1e+254、1.100110111001e+262、1e+252、1e+257、,
1.1001100001e+258、1.000000001e+257、1.0000000000011e+252、1.010000001e+264、,
1.0000001010001E+270、1e+207、1.10110110001e+261、1.0001001e+261、,
1.0000011000001e+261、1.0000000000001e+258、1.001100000011E+257、,
1.101e+242、1.0000000011e+268、1.1e+225、1.0001000010111e+266、,
1e+203、1.1e+245、1.01001e+263、1.0001e+257、1.10000000001E+244、,
1.01e+263,1.00000000011E+271,1.000000000001e+255,1e+241,
1.0011e+258、1.000001100001e+260、1e+169、1.01e+174、1.0000000000 1e+263、,
1e+271,1.00001e+267,1e+257,1.0000000000000 1e+254,1e+258,
1e+159、1e+151、1.00110001e+261、1.10011e+258、1e+261、1e+157、,
1.1e+245、1.0001e+252、1e+232、1e+229、1.0011001001E+217、,
1e+188、1.0001e+207、1e+222、1.1000110001011e+78、1e+177、1.0000000000000 1e+202、,
1e+226、1.100011e+162、1e+202、1e+201、1e+170、1e+181、1e+172、,
10000000 10001E+170、1e+172、1e+85、1e+152、1.1e+166、1.01e+160、,
10000000001E+89、1.100010010011e+158、1e+158、1e+158、1.010000000000001E+35、,
1e+134、1e+143、1.1e+133、1e+69、1.00100001e+74、1e+84、1e+73、,
1.0000011101e+72、1e+73、1e+69、1e+66、1e+66、1e+66、1e+51、1.00000000000011e+33、,
1.00100100001e+28,1e+28,1e+26),class=“data.frame”,row.names=c(NA,
-(101升)
我做错了什么,非二进制数字从哪里来?!
非常感谢

问题是您的整数太大,无法放入R的整数类型。看看Rmpfr包,正如@PavelObraztcov所指出的,这些非常大的数字将被存储为浮点数,而不是整数。这不允许“精确”地存储它们,浮点表示将是可存储在所用位数常量内的最接近原始数的近似值。有关为什么浮点数可能与您期望的精确值不同的更多详细信息,请参阅此相关问题-问题在于您的整数太大,无法放入R的整数类型。看看Rmpfr包,正如@PavelObraztcov所指出的,这些非常大的数字将被存储为浮点数,而不是整数。这不允许“精确”地存储它们,浮点表示将是可存储在所用位数常量内的最接近原始数的近似值。有关浮点数可能与您期望的精确值不同的原因的更多详细信息,请参阅此相关问题-