在开发基于组件/环的clojure应用程序时,emacs/cider的正确工作流程/使用途径是什么?
我觉得我可以"附加"到我正在运行的compojure/ring-process,更改其代码,读取/更改其数据,但我无法理解我该如何做到这一点?什么是正确的方法?
我所做的?
lein new compojure my-project
cd my-project
lein ring server-headless
Run Code Online (Sandbox Code Playgroud)
开发服务器现在运行.如果我更改项目中的文件,它们将自动重新加载.那很好.但我想要的是,我直接附加到流程并更改其功能,例如.
我明白这是可能的,但我无法理解.
我有一个包含许多列的大型数据集,其中包含两种不同格式的日期:
"1996-01-04" "1996-01-05" "1996-01-08" "1996-01-09" "1996-01-10" "1996-01-11"
Run Code Online (Sandbox Code Playgroud)
和
"02/01/1996" "03/01/1996" "04/01/1996" "05/01/1996" "08/01/1996" "09/01/1996"
Run Code Online (Sandbox Code Playgroud)
在这两种情况下,class()都是"character".由于数据集有很多行(450万),我正在寻找一种有效的data.table转换方法.现在,我使用这个自建功能:
convert_to_date <- function(in_array){
tmp <- try(as.Date(in_array, format = "%d/%m/%Y"),TRUE)
if (all(!is.na(tmp)) & class(tmp) != "try-error"){
return(tmp)
} else{
tmp2 <- try(as.Date(in_array),TRUE)
if (all(!is.na(tmp2)) & class(tmp2) != "try-error"){
return(tmp2)
} else{
return(in_array)
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后我用它转换我需要的列(data.table DF)
DF[,date:=convert_to_date(date)]
Run Code Online (Sandbox Code Playgroud)
然而,这仍然非常缓慢(每列接近45s).
有没有办法通过data.table方法优化这个?到目前为止,我还没有找到更好的方法,所以我会感谢任何提示.
PS:为了更好的可读性,我将该函数"外包"到第二个文件并在我的主程序中获取它.这是否会对R中的计算速度产生(负面)重大影响?
如何调整数据表操作,以便除了sum几个列的类别之外,它还会同时计算其他函数,例如count mean和(.N)并自动创建列名:"sum c1","sum c2"," sum c4","表示c1","表示c2","表示c4",最好也是1列"计数"?
我的旧解决方案是写出来
mean col1 = ....
mean col2 = ....
Run Code Online (Sandbox Code Playgroud)
等等,在data.table命令中
哪个有效,但我觉得非常低效,如果在新的应用程序版本中,计算依赖于用户在R Shiny应用程序中的选择来计算哪些列,它将不再用于预编码.
我已经通过一堆帖子和博客文章阅读了我的方式,但还没有弄清楚如何最好地做到这一点.我读到,在某些情况下,根据您使用的方法(.sdcols,get,lapply和/或=),大型数据表上的操作会变得非常慢.因此我添加了一个"相当大"的虚拟数据集
我的实际数据大约是100k行乘100列和1-100组.
library(data.table)
n = 100000
dt = data.table(index=1:100000,
category = sample(letters[1:25], n, replace = T),
c1=rnorm(n,10000),
c2=rnorm(n,1000),
c3=rnorm(n,100),
c4 = rnorm(n,10)
)
# add more columns to test for big data tables
lapply(c(paste('c', 5:100, sep ='')),
function(addcol) dt[[addcol]] <<- rnorm(n,1000) )
# Simulate columns selected by shiny app user
Colchoice <- c("c1", "c4")
FunChoice <- c(".N", …Run Code Online (Sandbox Code Playgroud) 在用户重命名文件时,用任何语言有什么方法可以挂钩我的程序吗?
例如:用户重命名文件并按Enter(或单击)以确认重命名操作.在文件实际重命名之前,我的程序"侦听"此事件并弹出一条消息"你确定要将C:\ test\file.txt重命名为C:\ test\test.txt吗?".
我在想/希望这可以用C++,C#或.NET.但我没有任何线索在哪里寻找.
有时当我将文本文件导入R时,我会在第一列的第一个值上附加字符"".有人知道为什么吗?
例如,文本文件的值为:
2011_21,3130
2010_51,4153
2011_16,3168
2010_20,3945
2012_38,2099
2012_17,2436
2010_40,2090
2011_2 ,1462
Run Code Online (Sandbox Code Playgroud)
在R中提出以下结果:
我在第一次阅读文件:
ts_data <- read.csv("yr_wk sales.csv", header=FALSE)
head(ts_data)
Run Code Online (Sandbox Code Playgroud)
这是返回的数据:
V1 V2
1 2011_21 3130
2 2010_51 4153
3 2011_16 3168
4 2010_20 3945
5 2012_38 2099
6 2012_17 2436
Run Code Online (Sandbox Code Playgroud)
有什么好方法可以避免这个吗?谢谢你的帮助.
当我安装插入符号.
install.packages("caret", dependencies=c("Depends", "Suggests"))
library(caret)
## Loading required package: lattice
## Loading required package: ggplot2
Run Code Online (Sandbox Code Playgroud)
LoadNamespace中的错误(i,c(lib.loc,.libPaths()),versionCheck = vI [[i]]):没有名为'digest'的
包错误:无法加载包'ggplot2'.
所以我通过使用此代码安装插入符来解决包摘要的问题,我又能得到什么:
install.packages("caret", dep="TRUE")
library(caret)
## Loading required package: lattice
## Loading required package: ggplot2
Run Code Online (Sandbox Code Playgroud)
LoadNamespace中的错误(i,c(lib.loc,.libPaths()),versionCheck = vI [[i]]):没有名为'gtable'的
包错误:无法加载包'ggplot2'.
如何在没有这种错误的情况下成功安装插入符号,尤其是ggplot2错误!
我的R版本是R 3.2.2
这是我第一次使用openCV库.我想用它来检测眼睛.我使用了FdActivity本教程中提供的代码:
http://romanhosek.cz/android-eye-detection-updated-for-opencv-2-4-6/
本教程使用OpenCV 2.4.6,但我在我的项目中下载了3.1版本.由于版本的不同,我更改了使用putText,矩形和圆形的行从imgproc而不是Core导入.这就是我改变的一切.我已将haarcascade_lefteye_2splits.xml和lbpcascade_frontalface.xml添加到res文件夹下的raw文件夹中.
运行应用程序时,我在logcat中收到此错误:
failed to load cascade classifier
Run Code Online (Sandbox Code Playgroud)
如果mJavaDetector或mJavaDetectorEye为空,则仅从这些行生成:
try {
// load cascade file from application resources
InputStream is = getResources().openRawResource(
R.raw.lbpcascade_frontalface);
File cascadeDir = getDir("cascade", Context.MODE_PRIVATE);
mCascadeFile = new File(cascadeDir,
"lbpcascade_frontalface.xml");
FileOutputStream os = new FileOutputStream(mCascadeFile);
byte[] buffer = new byte[4096];
int bytesRead;
while ((bytesRead = is.read(buffer)) != -1) {
os.write(buffer, 0, bytesRead);
}
is.close();
os.close();
// --------------------------------- load left eye
// classificator -----------------------------------
InputStream iser = getResources().openRawResource(
R.raw.haarcascade_lefteye_2splits);
File cascadeDirER = getDir("cascadeER",
Context.MODE_PRIVATE); …Run Code Online (Sandbox Code Playgroud) 我正在分析一组包含许多列(几乎30列)的数据.我想基于两列对数据进行分组,并将sum和mean函数应用于除时间戳之外的所有列.如何在除时间戳之外的所有列上使用summarise_each?
这是我的草案代码,但显然不正确.另外它生成和错误,因为它不能将Sum应用于POSIXt数据类型(错误:'sum'未定义为"POSIXt"对象)
features <- dataset %>%
group_by(X, Y) %>%
summarise_each(funs(mean,sum)) %>%
arrange(TIMESTAMP)
Run Code Online (Sandbox Code Playgroud) 在data.table按组切片时,用于切片数据的变量在函数执行期间不在子集中.我用这个证明了这个debugonce.
library(data.table)
x <- data.table(a = rep(letters[1:4], each = 3), b = rep(c("a", "b"), each = 6), c = rnorm(12))
myfun <- function(y) paste(y$a, y$b, y$c, collapse = "")
> debugonce(myfun)
> x[, myfun(.SD), by = .(b, a)]
debugging in: myfun(.SD)
debug: paste(y$a, y$b, y$c, collapse = "")
Browse[2]> y
c
1: -1.2662416
2: 0.9818497
3: -0.5395385
Run Code Online (Sandbox Code Playgroud)
我所追求的是split-sapply范例的功能,我将根据factor(s)切片data.frame并将该函数应用于所有列,也就是说,还包括用于切片的变量它(如下所示).
> debugonce(myfun)
> sapply(split(x, f = list(x$b, x$a)), FUN = myfun)
debugging in: FUN(X[[i]], ...)
debug: paste(y$a, y$b, …Run Code Online (Sandbox Code Playgroud) 在准备问题dplyr 或 data.table的答案以计算 R 中的时间序列聚合时,我注意到我确实得到了不同的结果,具体取决于表是就地更新还是作为新对象返回。此外,当我更改非等连接条件中的列顺序时,我确实得到了不同的结果。
目前,我对此没有解释,可能是由于我这边的重大误解或简单的编码错误。
请注意,这个问题特别要求解释观察到的
data.table连接行为。如果您对潜在问题有其他解决方案,请随时发布原始问题的答案。
最初的问题是如何使用这些数据计算每位患者在住院前 365 天内的住院次数(包括实际住院次数):
library(data.table) # version 1.10.4 (CRAN) or 1.10.5 (devel built 2017-08-19)
DT0 <- data.table(
patient.id = c(1L, 2L, 1L, 1L, 2L, 2L, 2L),
hospitalization.date = as.Date(c("2013/10/15", "2014/10/15", "2015/7/16", "2016/1/7",
"2015/12/20", "2015/12/25", "2016/2/10")))
setorder(DT0, patient.id, hospitalization.date)
DT0
Run Code Online (Sandbox Code Playgroud)
Run Code Online (Sandbox Code Playgroud)patient.id hospitalization.date 1: 1 2013-10-15 2: 1 2015-07-16 3: 1 2016-01-07 4: 2 2014-10-15 5: 2 2015-12-20 6: 2 2015-12-25 7: 2 …