所以我是data.tableR的忠实粉丝.我几乎一直都在使用它,但是遇到了一种根本不适合我的情况.我有一个包(我公司内部),它使用R double来存储无符号64位整数的值,其位序列对应于某些奇特的编码.这个包在除data.table之外的任何地方都能很好地工作.我发现,如果我在这些数据的列上聚合,我会丢失大量的唯一值.我唯一猜到的是data.table在某种奇怪的double优化中截断位.
任何人都可以确认是这种情况吗?这只是一个错误吗?
下面看到问题的复制和我目前必须使用的包的比较,但希望避免激情(dplyr).
temp <- structure(list(obscure_math = c(6.95476896592629e-309, 6.95476863436446e-309,
6.95476743245288e-309, 6.95476942182375e-309, 6.95477149408563e-309,
6.95477132830476e-309, 6.95477132830476e-309, 6.95477149408562e-309,
6.95477174275702e-309, 6.95476880014538e-309, 6.95476896592647e-309,
6.95476896592647e-309, 6.95476900737172e-309, 6.95476900737172e-309,
6.95476946326899e-309, 6.95476958760468e-309, 6.95476958760468e-309,
6.95477020928318e-309, 6.95477124541406e-309, 6.95476859291965e-309,
6.95476875870014e-309, 6.95476904881676e-309, 6.95476904881676e-309,
6.95476904881676e-309, 6.95476909026199e-309, 6.95476909026199e-309,
6.95476909026199e-309, 6.95476909026199e-309, 6.9547691317072e-309,
6.9547691317072e-309, 6.9547691317072e-309, 6.9547691317072e-309,
6.9547691317072e-309, 6.9547691317072e-309, 6.9547691317072e-309,
6.9547691317072e-309, 6.9547691317072e-309, 6.9547691317072e-309,
6.9547691317072e-309, 6.9547691317072e-309, 6.95477211576406e-309,
6.95476880014538e-309, 6.95476880014538e-309, 6.95476880014538e-309,
6.95476892448104e-309, 6.95476880014538e-309, 6.95476892448105e-309,
6.9547689659263e-309, 6.95476913170719e-309, 6.95476933893334e-309
)), .Names = "obscure_math", class = c("data.table", "data.frame"), row.names = c(NA,
-50L))
dt_collapsed …Run Code Online (Sandbox Code Playgroud) 请考虑以下示例:
structure(NA_real_, class = "Date")
## [1] NA
structure(Inf, class = "Date")
## [1] NA
is.na(structure(NA_real_, class = "Date"))
## [1] TRUE
is.na(structure(Inf, class = "Date"))
## [1] FALSE
Run Code Online (Sandbox Code Playgroud)
两者都打印为NA.这是预期的行为还是这个错误?看到NA一些不会返回的东西是非常烦人TRUE的is.na().
当然这不是故意的吗?这是在功能的其他部分发生的事情,dplyr我应该关注吗?我喜欢性能和讨厌的data.table语法.是否有替代dplyr与data.table当前正在使用安全,还是高性能的?
A <- structure(list(ORDER = c(30305720L, 30334659L, 30379936L,
30406397L, 30407697L, 30431950L),
COST = c("0", "", "11430.52", "20196.279999999999", "0", "10445.99")),
.Names = c("ORDER", "COST"),
row.names = c(NA, 6L),
class = "data.frame")
B <- structure(list(ORDER = c(30334659, 30379936, 30406397, 30407697, 30431950),
AREA = c(0, 2339, 2162, 23040, 475466)),
.Names = c("ORDER", "AREA"),
row.names = c(4L, 8L, 11L, 12L, 15L),
class = c("tbl_df", "tbl", "data.frame"))
Run Code Online (Sandbox Code Playgroud)
垃圾结果:
left_join(A, B)
ORDER COST AREA
1 30305720 0 NA …Run Code Online (Sandbox Code Playgroud) 我今天正在帮助某人正式使用我们作为txt文件读取的pdf文件中的一些信息.不幸的是,当时tm包readPDF函数无法正常工作,但通过一些修改我们能够让它工作得很好.当我们从.txt文件中重新出现一些漏洞时,我们发现了一些令我们大多数人感到惊讶的东西,即字符串"\ 040"被解释为空格"".
> x <- "\040"
> x
> [1] " "
Run Code Online (Sandbox Code Playgroud)
对于您可能期望发生这种情况的其他相似字符串(即"\n"或"\ t"),不会发生这种情况.
> y <- "\n"
> y
> [1] "\n"
> z <- "\t"
> z
>[1] "\t"
Run Code Online (Sandbox Code Playgroud)
为什么是这样?在R中,哪些其他字符串的解释方式不同?
编辑:
在简单的实验之后,任何"\ xxx"(其中x是数字)都会产生不同的结果.这有什么价值?
感兴趣的网址是:
http://patft.uspto.gov/netacgi/nph-Parser?Sect1=PTO2&Sect2=HITOFF&u=/netahtml/PTO/search-adv.htm&r=10&f=G&l=50&d=PTXT&OS=AN/(nortel)&RS=AN/nortel&Query=AN/(nortel)&Srch1=nortel.ASNM.&NextList1=Next 50 Hits
Run Code Online (Sandbox Code Playgroud)
选择测试其存在的函数是:
> url.exists("http://patft.uspto.gov/netacgi/nph-Parser?Sect1=PTO2&Sect2=HITOFF&u=/netahtml/PTO/search-adv.htm&r=10&f=G&l=50&d=PTXT&OS=AN/(nortel)&RS=AN/nortel&Query=AN/(nortel)&Srch1=nortel.ASNM.&NextList1=Next 50 Hits")
[1] FALSE
Run Code Online (Sandbox Code Playgroud)
为什么不工作?该URL明确存在并在chrome中解析,并且htmlTreeParse在URL上使用工作正常.
我有一个问题,我想以特定的方式组合所有相同类型的向量列表.我希望我的结果向量的第一个元素是我列表中第一个向量的第一个元素,第二个元素应该是第二个向量的第一个元素,第三个元素应该是第三个元素中的第一个元素,依此类推,直到n,其中n是我的列表的长度,然后元素n + 1应该是第一个向量的第二个元素.这重复直到完成.
目前,我这样做:
CharacterVector measure(nrows * expansion);
CharacterVector temp(nrows);
for(int i=0; i < measure.size(); i++){
temp = values[i % expansion];
measure[i] = temp[i / expansion];
}
return(measure);
Run Code Online (Sandbox Code Playgroud)
哪里values是List的CharacterVectors.这似乎非常低效,temp每次都要覆盖,但我不知道更好的方法来访问元素values.我不太了解很多C++,但我认为必须有更好的方法.
任何和所有的帮助非常感谢!
编辑:' values中的所有向量都具有相同的长度nrows并且values具有expansion元素.