class(type.convert(as.numeric(1e3)))
# [1] "integer"
class(type.convert(as.numeric(1e4)))
# [1] "integer"
class(type.convert(as.numeric(1e5)))
# [1] "numeric"
class(type.convert(as.numeric(1e6)))
# [1] "numeric"
Run Code Online (Sandbox Code Playgroud)
为什么较大的那些没有转换为整数?还有很多事要做:
.Machine$integer.max
# [1] 2147483647
Run Code Online (Sandbox Code Playgroud)
我想加快我的计算并获得结果而不使用函数循环m.可重复的例子:
N <- 2500
n <- 500
r <- replicate(1000, sample(N, n))
m <- function(r, N) {
ic <- matrix(0, nrow = N, ncol = N)
for (i in 1:ncol(r)) {
p <- r[, i]
ic[p, p] <- ic[p, p] + 1
}
ic
}
system.time(ic <- m(r, N))
# user system elapsed
# 6.25 0.51 6.76
isSymmetric(ic)
# [1] TRUE
Run Code Online (Sandbox Code Playgroud)
在循环的每次迭代中,for我们都处理矩阵而不是向量,那么如何进行矢量化?
@ joel.wilson此函数的目的是计算元素的成对频率.所以之后我们可以估计成对包含概率.
感谢@Khashaa和@alexis_laz.基准:
> require(rbenchmark)
> benchmark(m(r, N),
+ m1(r, N),
+ mvec(r, N), …Run Code Online (Sandbox Code Playgroud) 所以,我有大量的XML文件,包含大量报告.我在下面创建了数据示例,以大致显示xml的大小及其结构:
x <- "<Report><Agreements><AgreementList /></Agreements><CIP><RecordList><Record><Date>2017-05-26T00:00:00</Date><Grade>2</Grade><ReasonsList><Reason><Code>R</Code><Description>local</Description></Reason></ReasonsList><Score>xxx</Score></Record><Record><Date>2017-04-30T00:00:00</Date><Grade>2</Grade><ReasonsList><Reason><Code>R</Code><Description/></Reason></ReasonsList><Score>xyx</Score></Record></RecordList></CIP><Individual><Contact><Email/></Contact><General><FirstName>MM</FirstName></General></Individual><Inquiries><InquiryList><Inquiry><DateOfInquiry>2017-03-19</DateOfInquiry><Reason>cc</Reason></Inquiry><Inquiry><DateOfInquiry>2016-10-14</DateOfInquiry><Reason>er</Reason></Inquiry></InquiryList><Summary><NumberOfInquiries>2</NumberOfInquiries></Summary></Inquiries></Report>"
x <- paste(rep(x, 1.5e+5), collapse = "")
x <- paste0("<R>", x, "</R>")
require(XML)
p <- xmlParse(x)
p <- xmlRoot(p)
p[[1]]
Run Code Online (Sandbox Code Playgroud)
我想将这些数据转换为data.frame,但XML的结构并不简单.以前使用XML我创建了循环,每个报告将其子节点转换为data.frame,但是这里(在此数据中)子节点数大于30(并未将所有这些都放在示例中),并且结构不同(列表节点在XML中甚至可以出现2级深度).
所以我几乎没有问题:
1)我确信循环报告不是处理此问题的最佳方法.我该如何处理这个问题?
2)我可以以某种方式提取一个报告的所有数据两行一行data.frame(递归可能)?
3)或者我可以为XML的每个列表对象自动创建单独的data.frames吗?
任何帮助将非常感激.
结果示例可能如下所示:
Classes ‘tbl_df’, ‘tbl’ and 'data.frame': 1 obs. of 17 variables:
$ Record.1.Date : chr "2017-05-26T00:00:00"
$ Record.1.Grade : num 2
$ Record.1.Reason.1.Code : chr "R"
$ Record.1.Reason.1.Description: chr "local"
$ Record.1.Score : chr "xxx"
$ Record.2.Date : chr "2017-05-26T00:00:00"
$ Record.2.Grade : num 2
$ Record.2.Reason.1.Code : …Run Code Online (Sandbox Code Playgroud)