小编Jef*_*len的帖子

创建一个空的data.frame

我正在尝试初始化没有任何行的data.frame.基本上,我想为每个列指定数据类型并命名它们,但不会创建任何行作为结果.

到目前为止我能做的最好的事情是这样的:

df <- data.frame(Date=as.Date("01/01/2000", format="%m/%d/%Y"), 
                 File="", User="", stringsAsFactors=FALSE)
df <- df[-1,]
Run Code Online (Sandbox Code Playgroud)

这会创建一个data.frame,其中包含我想要的所有数据类型和列名的单行,但也会创建一个无用的行,然后需要将其删除.

有一个更好的方法吗?

r dataframe r-faq

448
推荐指数
12
解决办法
77万
查看次数

创建两个日期之间的所有日期的向量

在R中有一个简单的方法可以逐项列出在两个指定日期之间发生的所有有效日期吗?例如,我想要以下输入:

itemizeDates(startDate="12-30-11", endDate="1-4-12")
Run Code Online (Sandbox Code Playgroud)

生成以下日期:

"12-30-11" "12-31-11", "1-1-12", "1-2-12", "1-3-12", "1-4-12"
Run Code Online (Sandbox Code Playgroud)

我对日期的类和格式很灵活,我只需要实现这个概念.

r lubridate

56
推荐指数
3
解决办法
4万
查看次数

Tomcat Guice/JDBC内存泄漏

由于Tomcat中的孤立线程,我遇到了内存泄漏.特别是,似乎Guice和JDBC驱动程序没有关闭线程.

Aug 8, 2012 4:09:19 PM org.apache.catalina.loader.WebappClassLoader clearReferencesThreads
SEVERE: A web application appears to have started a thread named [com.google.inject.internal.util.$Finalizer] but has failed to stop it. This is very likely to create a memory leak.
Aug 8, 2012 4:09:19 PM org.apache.catalina.loader.WebappClassLoader clearReferencesThreads
SEVERE: A web application appears to have started a thread named [Abandoned connection cleanup thread] but has failed to stop it. This is very likely to create a memory leak.
Run Code Online (Sandbox Code Playgroud)

我知道这与其他问题(例如这个问题)类似,但在我的情况下,"不要担心它"的答案是不够的,因为它给我带来了问题.我有CI服务器定期更新此应用程序,并且在6-10次重新加载后,CI服务器将挂起,因为Tomcat内存不足.

我需要能够清除这些孤立的线程,以便我可以更可靠地运行我的CI服务器.任何帮助,将不胜感激!

java tomcat

49
推荐指数
5
解决办法
5万
查看次数

命名列表到/从Data.Frame

我正在寻找一种快速的方法来在以下格式的列表之间来回:

$`a`
  [1] 1 2 3
$`b`
  [1] 4 5 6
Run Code Online (Sandbox Code Playgroud)

来自/来自以下格式的data.frame:

   name x
 1    a 1
 2    a 2
 3    a 3
 4    b 4
 5    b 5
 6    b 6
Run Code Online (Sandbox Code Playgroud)

(在这种情况下,不要真正关心列的名称是什么.)

这是上面以R格式使用的数据框:

df <- data.frame(name=c(rep("a",3),rep("b",3)), x=c(1:3,4:6))
Run Code Online (Sandbox Code Playgroud)

同样,我正在寻找两个独立的操作:一个将上面的data.frame转换为一个列表,另一个将它转换回data.frame.

r dataframe

30
推荐指数
4
解决办法
2万
查看次数

将混合长度命名列表转换为data.frame

我有以下格式的列表:

[[1]]
[[1]]$a
[1] 1

[[1]]$b
[1] 3

[[1]]$c
[1] 5

[[2]]       
[[2]]$c
[1] 2

[[2]]$a
[1] 3
Run Code Online (Sandbox Code Playgroud)

存在可能的"键"的预定义列表(a,b并且c,在这种情况下),并且列表中的每个元素("行")将具有为这些键中的一个或多个定义的值.我正在寻找一种从上面的列表结构到一个data.frame的快速方法,在这种情况下,它将如下所示:

  a  b c
1 1  3 5
2 3 NA 2
Run Code Online (Sandbox Code Playgroud)

任何帮助,将不胜感激!


附录

我正在处理一个最多有50,000行和3-6列的表,其中指定了大多数值.我将从JSON中获取表格并尝试快速将其转换为data.frame结构.

以下是一些代码,用于创建我将使用的比例的样本列表:

ids <- c("a", "b", "c")
createList <- function(approxSize=100){     
    set.seed(1234)

    fifth <- round(approxSize/5)

    list <- list()
    list[1:(fifth*5)] <- rep(
        list(list(a=1, b=2, c=3), 
                 list(a=3, b=4, c=5),
                 list(a=7, c=9),
                 list(c=6, a=8, b=3),
                 list(b=6)), 
        fifth)

    list
}
Run Code Online (Sandbox Code Playgroud)

只需创建一个包含approxSize50,000的列表即可在此大小的列表上测试性能.

r dataframe

17
推荐指数
2
解决办法
6728
查看次数

动态生成引用类

我试图在R包中动态生成引用类,并且它被证明是相当困难的.以下是我采取的方法和遇到的问题:

我正在创建一个包,我希望能够在模式中动态读取并自动生成关联的引用类(想想SOAP).当然,这意味着我无法在包源中预先定义我的引用类.

我最初尝试使用简单的方法创建一个新类:

myClass <- setRefClass("NewClassName", fields=list(fieldA="character"))
Run Code Online (Sandbox Code Playgroud)

当然,它在交互式执行时工作正常,但是当包含在包源中时,我会收到locked binding错误.从我的阅读中看,这看起来是因为当交互式运行时,类信息存储在未锁定的全局环境中,而我的包的基本环境被锁定.

然后我发现了一个建议使用某些东西的线程:

myClass <- setRefClass("NewClassName", fields=list(fieldA="character"), where=globalenv())
Run Code Online (Sandbox Code Playgroud)

当我尝试构建软件包时,这实际上已经崩溃了R/Studio,所以我不知道它生成的错误的日志,但不幸的是,它当然没有用.

接下来我尝试在我的包中创建一个新环境,我可以使用它来存储这些引用类.所以我.classEnv <- new.env()在我的包源中添加了一行(不在任何函数内部),然后在创建新的引用类时尝试使用该类:

myClass <- setRefClass("NewClassName", fields=list(fieldA="character"), where=.classEnv) 
Run Code Online (Sandbox Code Playgroud)

这实际上似乎工作正常,但会产生以下警告:

> myClass <- setRefClass("NewClassName", where=.classEnv)
Warning message:
In getPackageName(where) :
  Created a package name, ‘2013-04-23 10:19:14’, when none found
Run Code Online (Sandbox Code Playgroud)

所以,出于某种原因,methods::getPackageName()我无法拿起我的新环境所在的软件包?

有没有办法以不同的方式创建我的新环境,以便getPackageName()能够正确识别包?我可以添加一些允许我帮助getPackageName()检测包的功能吗?如果我可以处理警告,或者我是否通过尝试动态创建它们而滥用引用类,这是否会起作用?

r reference-class

13
推荐指数
1
解决办法
410
查看次数

ggplot:一个Color/class的多行

我试图在ggplot2中将多行作为单个"类"的一部分进行绘制.我可以绘制如下内容:

图像有5个班级

但我的问题是我想将n1,n2和n3显示为单个类(图例中每个都有一个名称的灰色细线).

我的问题是,如果我在数据框中创建一个新的因子以便对它们进行分组,我最终会从n1的末尾(右上角)到n2的开头(左下角)绘制一个加法连接,这会增加一个对角线我的图:

一类图

这更接近我想要的,但有额外的对角线.如果重要的是,我使用ROCR计算这些,然后从结果performance对象中提取x和y点以生成这些线.

r ggplot2

7
推荐指数
1
解决办法
4752
查看次数

摩卡全球范围问题

围绕我正在使用的全局对象进行mocha测试时遇到了很大问题.我能够生成以下MRE,它没有给出完全相同的错误,但举例说明了有问题的(错误的?)行为.任何见解都会非常感激.

我有以下main.js文件/lib:

exports.exec = function(){
  console.log(test);
}
Run Code Online (Sandbox Code Playgroud)

然后是以下内容/test/test.js:

var should = require('should');
var main = require('../lib/main');

global.test = {something: 1};

describe('normal test', function(){
  beforeEach(function(){
    global.test = {another: 2};
  }),

  afterEach(function(){
    delete global.test;
  });

  it ('might work with global', function(){
    main.exec();
  })
});
Run Code Online (Sandbox Code Playgroud)

最后,这是test/test2.js:

var should = require('should');
var main = require('../lib/main');

global.test = {third: 3};

describe('some test', function(){
  it ('messes up global', function(){
    main.exec();
  })
});
Run Code Online (Sandbox Code Playgroud)

我希望第一个测试输出{another:2},第二个测试打印{third: 3}.实际上,这是我独立运行每个测试时得到的行为.例如 …

javascript mocha.js node.js

7
推荐指数
1
解决办法
1万
查看次数

测试连接的问题

任何人都有任何想法为什么textConnectiontest_that函数内部使用不能正常工作?

即如果我直接运行以下代码,一切都很好:

txt <- ""
con <- textConnection("txt", "w")  
writeLines("test data", con)
close(con)

expect_equal(txt, "test data")  #Works
Run Code Online (Sandbox Code Playgroud)

然而,如果我将其嵌入到test_that函数内部,它就不起作用,我得到一个空的txt变量来expect_equal调用.

test_that("connection will work", {

  txt <- ""
  con <- textConnection("txt", "w")  
  writeLines("test data", con)
  close(con)

  expect_equal(txt, "test data")  
}) #Fails
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 States.1252  LC_CTYPE=English_United States.1252    LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C                           LC_TIME=English_United States.1252    

attached base packages:
  [1] stats     graphics  grDevices utils     datasets  methods   base     

other …
Run Code Online (Sandbox Code Playgroud)

r testthat

5
推荐指数
1
解决办法
106
查看次数

具有半私密秘密的OAuth授权码的安全性

我正在开发一个OAuth秘密无法完全保护的应用程序; 有一组用户必须将其暴露给他们.想象一下如下情况:

一家公司正在开发它为公众托管的软件,它依赖于OAuth2到某些第三方进行身份验证.但不可避免地,该应用程序的OAuth秘密将暴露给该公司的所有员工.据推测,一些不好的员工可能会将其用于恶意目的或与其他人分享.

我最初倾向于认为这样的环境应该使用implicitOAuth2工作流程,该工作流程不是基于在服务器上保密的秘密密钥.然而,我越了解它,我越倾向于认为authorization code工作流实际上可能更适合这里,因为秘密密钥 - 虽然不完全保密 - 至少只暴露于"值得信赖的"演员

我是否正确地相信authorization code工作流程只会增加密钥不能完全保密的环境中的安全性?是否有利用引入的任何威胁,authorization codeimplicit工作流程,如果这个秘密已经被泄露?如果匿名/公共用户无法访问密钥,除了方便/简单之外还有其他任何原因可以使用implicit工作流authorization code吗?

security ruby-on-rails oauth oauth-2.0 google-oauth

5
推荐指数
1
解决办法
313
查看次数