我很惊讶地做了以下事情:
R) system.time(lastOrder <- order[,lapply(.SD,tail,1),by="TRADER_ID,EXEC_IDATE"]);
utilisateur système écoulé
1.45 0.00 1.53
R) nrow(order)
[1] 75301
R) ncol(order)
[1] 23
Run Code Online (Sandbox Code Playgroud)
认为这很长,然后我做了
R) system.time(lastOrder <- order[,list(test=tail(EXEC_IDATE,1)),by="TRADER_ID,EXEC_IDATE"]);
utilisateur système écoulé
0.14 0.00 0.14
Run Code Online (Sandbox Code Playgroud)
据我所知,如果你知道要选择的所有行并且大部分工作都已完成,那么我不明白为什么将这个应用于所有列的时间要长10倍.我在第一段代码上做错了什么,这是我知道按组选择最后一行的唯一方法
我使用R 2.15.2的windows XP.
我习惯使用,Rgui.exe但它缺乏我喜欢使用的UNIX标准CTRL+R <=>backward research和CTRL+U <=>erase line......
如果我错过了什么请告诉我!
然后我尝试Rterm.exe(看起来与R.exe我相同),它具有所有这些不错的功能.我找到了如何调整它右键单击窗口顶部以设置高度 - 宽度(就像调整你得到的窗口一样cmd.exe).
问题是,现在我在窗口上看不到多于75字符,最后有一个$:像这样:
R) ppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp$
不确定它是否是一个R选项windows,但如果我设置options("width"=180)我可以data.frame在窗口的整个宽度上看到...
不确定发生了什么,我可以修改吗?
我在文件中有一个字符日期时间列.我加载文件(进入a data.table)并执行需要将列转换为的内容POSIXct.然后我需要将POSIXct值写回文件,但日期时间将不相同(因为它打印不正确).
这种打印/格式化问题是众所周知的,并且已经多次讨论过.我读过一些描述这个问题的帖子.我发现的最权威的答案是针对这个问题给出的.该问题的答案提供了两个应该解决此问题的函数(myformat.POSIXct和form),但它们似乎不适用于此示例:
x <- "04-Jan-2013 17:22:08.139"
options("digits.secs"=6)
form(as.POSIXct(x,format="%d-%b-%Y %H:%M:%OS"),format="%d-%b-%Y %H:%M:%OS3")
[1] "04-Jan-2013 17:22:08.138"
form(as.POSIXct(x,format="%d-%b-%Y %H:%M:%OS"),format="%d-%b-%Y %H:%M:%OS4")
[1] "04-Jan-2013 17:22:08.1390"
myformat.POSIXct(as.POSIXct(x,format="%d-%b-%Y %H:%M:%OS"),digits=3)
[1] "2013-01-04 17:22:08.138"
myformat.POSIXct(as.POSIXct(x,format="%d-%b-%Y %H:%M:%OS"),digits=4)
[1] "2013-01-04 17:22:08.1390"
Run Code Online (Sandbox Code Playgroud)
我的sessionInfo:
R version 2.15.2 (2012-10-26)
Platform: x86_64-w64-mingw32/x64 (64-bit)
locale:
[1] LC_COLLATE=English_United Kingdom.1252 LC_CTYPE=English_United Kingdom.1252
[3] LC_MONETARY=English_United Kingdom.1252 LC_NUMERIC=C
[5] LC_TIME=C
attached base packages:
[1] stats graphics grDevices datasets utils methods base
other attached packages:
[1] fasttime_1.0-0 data.table_1.8.9 …Run Code Online (Sandbox Code Playgroud) 这是我不理解的东西data.table
如果我选择一行,我尝试将此行的所有值设置NA为新行 - data.table被转换为逻辑
#Here is a sample table
DT <- data.table(a=rep(1L,3),b=rep(1.1,3),d=rep('aa',3))
DT
a b d
1: 1 1.1 aa
2: 1 1.1 aa
3: 1 1.1 aa
#Here I extract a line, all the column types are kept... good
str(DT[1])
Classes ‘data.table’ and 'data.frame': 1 obs. of 3 variables:
$ a: int 1
$ b: num 1.1
$ d: chr "aa"
- attr(*, ".internal.selfref")=<externalptr>
#Now here I want to set them all to NA...they all become …Run Code Online (Sandbox Code Playgroud) 我拼命想让YouCompletMe在windows上工作,作者明确表示没有官方支持windows,所以这很公平.虽然有一个wiki可以在windows上构建它,你会发现在线的1/2人声称他们成功地在Windows上构建它而没有对C/C++的语义支持......
我想知道我是否可以使用ycm_core.pyd其他人编译的,或者是否因为显而易见的原因无效.
我在用 vim7.4 (I have both 32/64 bit versions) + python2.7 + python3.2
我想做相当于lsin R。说我想要ls /a/b/c/201*/*/d/e/f/*/sameNameFile.gz,这个命令在终端上运行需要 5 秒钟,我尝试使用list.files但它需要一个path参数和需要recursive=TRUE。这需要很长时间...
是否有一个我可以使用的函数(或一个选项list.files)可以让我运行这个ls命令(我知道我可以运行 comamnd 本身,system(cmd,intern=TRUE)但我想要一个 R 解决方案)
我遇到了这样一个文件:
COL1 COL2 COL3
weqw asrg qerhqetjw
weweg ethweth rqerhwrtjw
rhqerhqerhq qergqer qerhqew5h
qerh qergqer wetjwryerj
Run Code Online (Sandbox Code Playgroud)
我不能直接加载它fread,所以我代替\s+通过,与sed比我给了FREAD并解决它.但有没有一种内置的方式来阅读这种数据data.table?
对于日期时间,fasttime为POSIXct提供了非常快速的解析
library('fasttime')
library('lubridate')
library('microbenchmark')
# parse character to POSIXct
Sys.setenv(TZ='UTC')
test <- rep('2011-04-02 11:01:00',1e4)
microbenchmark(
test1 <- fastPOSIXct(test),
test2 <- fast_strptime(test,format='%Y-%m-%d %H:%M:%S'),
test3 <- as.POSIXct(test, format='%Y-%m-%d %H:%M:%S'),
test4 <- ymd_hms(test),
times=100)
Unit: microseconds
expr min lq mean median uq max
test1 <- fastPOSIXct(test) 663.123 692.337 1409.448 701.821 712.4965 71231.585
test2 <- fast_strptime(test, format = "%Y-%m-%d %H:%M:%S") 1026.342 1257.508 1263.157 1264.928 1273.8145 1366.438
test3 <- as.POSIXct(test, format = "%Y-%m-%d %H:%M:%S") 9865.265 10060.450 10154.651 10145.551 10186.3030 13358.136
test4 …Run Code Online (Sandbox Code Playgroud) I came across the following result that seems very un-intuitive to me:
library(bit64)
x = as.integer64(200)
y = as.integer64(300)
min(x, y)
integer64
[1] 300
min.integer64(x, y)
integer64
[1] 300
Run Code Online (Sandbox Code Playgroud)
Surely there is something obvious that I do not get but can someone point it out to me ?
> sessionInfo()
R version 3.6.1 (2019-07-05)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: CentOS Linux 7 (Core)
Matrix products: default
BLAS: /usr/lib64/libblas.so.3.4.2
LAPACK: /usr/lib64/liblapack.so.3.4.2
locale:
[1] LC_CTYPE=en_US.utf8 LC_NUMERIC=C
[3] LC_TIME=en_US.utf8 LC_COLLATE=en_US.utf8
[5] LC_MONETARY=en_US.utf8 LC_MESSAGES=en_US.utf8 …Run Code Online (Sandbox Code Playgroud) 我一直愿意tab在rmarkdown.
我创建了一个in_tabs似乎适用于除ggplot情节之外的所有内容的方法。
它的工作方式是创建Rmd在选项卡中显示嵌套列表所需的代码。
以下可重现的示例显示了该问题:
---
title: "test"
output: html_document
---
```{r setup, include = FALSE}
library(ggplot2)
library(plotly)
l1 <- list(p1 = data.frame(x=1:10, y=1:10))
l2 <- list(p2 = data.frame(x=100:110, y=100:110))
gplot <- function(data) {
p <- ggplot(data) + aes(x=x, y=y) + geom_point() + geom_line()
return(p)
}
gplotly <- function(data) {
p <- ggplot(data) + aes(x=x, y=y) + geom_point() + geom_line()
return(ggplotly(p))
}
```
```{r, code, include = FALSE}
in_tabs <- function(l, …Run Code Online (Sandbox Code Playgroud)