小编Roc*_*nce的帖子

JSON序列化Mongodb

我使用python包pymongo从mongodb数据库中检索数据.

>>> r = collection.find()   # returns an object of class 'Cursor'
Run Code Online (Sandbox Code Playgroud)

然后我转换成一个列表

>>> l = list(r)             # returns a 'list' of 'dict'
Run Code Online (Sandbox Code Playgroud)

这是print(l)返回的内容:

>>> [{u'date': datetime.datetime(2009, 11, 10, 10, 45), u'_id': 1, u'name': u'name1', u'value': 11},{u'date': datetime.datetime(2013, 11, 10, 10, 45), u'_id': 2, u'name': u'name2', u'value': 22}]
Run Code Online (Sandbox Code Playgroud)

现在我需要转换为JSON,以便我可以操作它.

>>> json.dumps(l)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.7/json/__init__.py", line 231, in dumps
    return _default_encoder.encode(obj)
  File "/usr/lib/python2.7/json/encoder.py", line 201, in encode
    chunks = self.iterencode(o, _one_shot=True) …
Run Code Online (Sandbox Code Playgroud)

python mongodb pymongo rpython

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

R:从包中覆盖函数的正确方法是什么?

我正在使用R包,其中有2个函数f1和f2(f2调用f1)
我希望覆盖函数f1.

由于R 2.15和包中命名空间的强制使用,如果我只是获取新函数,它确实可以在全局环境中使用(即在控制台中只调用f1(x)返回新结果).但是,调用f2仍将使用打包的函数f1.(因为命名空间修改了搜索路径,并按照"写入R扩展"教程中的说明对其进行了封装)
将f1替换为新命令的正确方法是什么?(除了再次构建包装!)这在几种情况下都很有用.例如,如果包中存在您尚未开发的错误.或者,如果您不想在日常开发过程中重新构建软件包.

我知道功能

assignInNamespace("f1",f1,ns="mypackage")
Run Code Online (Sandbox Code Playgroud)

但是,帮助页面?assignInNamespace有点令人讨厌,并且似乎不鼓励人们在不提供更多信息的情况下使用它,我在官方CRAN教程中找不到任何最佳实践建议.并在调用此函数后:

# Any of these 2 calls return the new function
mypackage::f1 
getFromNamespace(x = "f1", envir = as.environment("package:mypackage"))

# while this one still returns the old packaged version
getFunction(name = "f1", where = as.environment("package:mypackage")) 
Run Code Online (Sandbox Code Playgroud)

这非常令人不安.搜索路径如何受到影响?

现在我正在做一些丑陋的事情,比如修改lockEnvironment函数,这样library就不会锁定包命名空间,一旦我替换了f1,我可以在以后锁定它(这似乎不是一个好习惯)

所以基本上我有两个问题:

  1. assignInNamespace在包命名空间(应该被锁定)的情况下究竟做了什么
  2. 有什么好的做法?

非常感谢您在那里分享您的经验.

编辑:对此问题感兴趣的人可能会发现此博客文章非常有趣.

namespaces r package assign

19
推荐指数
2
解决办法
4238
查看次数

如何从POSIXct和POSIXlt对象中提取正确的时区?

time1 = as.POSIXlt("2010-07-01 16:00:00", tz="Europe/London")
time1
# [1] "2010-07-01 16:00:00 Europe/London"
Run Code Online (Sandbox Code Playgroud)

time2 = as.POSIXct("2010-07-01 16:00:00", tz="Europe/London")
time2
# [1] "2010-07-01 16:00:00 BST"
Run Code Online (Sandbox Code Playgroud)

为什么时区呈现不同?这对我很重要,因为我需要从我的约会时间中提取时区.

base::format(time1, format="%Z")
# [1] "BST"
base::format(time2, format="%Z")
# [1] "BST"
Run Code Online (Sandbox Code Playgroud)

英国拯救时间都给予同样的"BST"!

问题是"BST"不会被POSIXct/POSIXlt格式识别:

as.POSIXlt("2010-07-01 16:00:00", tz="BST")
# [1] "2010-07-01 16:00:00 BST"
# Warning messages:
# 1: In strptime(xx, f <- "%Y-%m-%d %H:%M:%OS", tz = tz) :
#   unknown timezone 'BST'
# 2: In structure(xx, class = c("POSIXct", "POSIXt"), tzone = tz) :
#   unknown timezone 'BST'
# …
Run Code Online (Sandbox Code Playgroud)

timezone posix r

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

如何创建函数向量?

我想使用两个agruments函数'func'创建一个函数向量,例如这个:

func = function(number, coefficient) {  
     return(coefficient*number)  
}
Run Code Online (Sandbox Code Playgroud)

这是我如何创建函数向量:

vector_of_functions = NULL  
for (i in 1:4) {  
     vector_of_functions = c(vector_of_functions, 
                             function(number) func(number=number, coefficient=i))  
}
Run Code Online (Sandbox Code Playgroud)

我的问题是组成我的矢量的所有函数都是相同的,即使它们是i通过循环使用不同的创建的.它接缝是使用最后一个值i(这里是一个全局变量)来评估它们.

有人有想法吗?

r

16
推荐指数
1
解决办法
9785
查看次数

R中的掩码函数列表

我使用了很多软件包,我知道有些函数被掩盖了,因为它们存在于几个不同的软件包中.有没有办法获取重复函数列表(或掩码函数?)

理想的情况是拥有一个重复函数列表,并为每个函数列出它所在的包列表.

packages r mask duplicates

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

jenkins slave作为用户运行

我有一个jenkins设置,有多个用户使用Active Directory插件登录.这很有用,这样每个用户都可以访问自己的任务.

但是,每个用户在本地网络上也有不同的权限,例如访问不同的文件夹等.我注意到,给每个任务的权限不是链接到用户,而是链接到作为服务运行的从属帐户.有没有办法改变它,以便在用户的凭证(以及因此权限)下在奴隶上执行任务?

谢谢

permissions active-directory jenkins

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

R中S4对象的总和

我有一个S4类,我想定义这些对象的线性组合.

是否可以在这个特定的类上发送*+运行?

r operator-overloading s4

12
推荐指数
2
解决办法
1217
查看次数

在Linux容器上登录到Windows域

我的公司专门使用Windows机器,当我登录到Windows域时,它可以访问一些共享驱动器和数据库.现在我想在容器中运行R,例如按照教程 https://ropenscilabs.github.io/r-docker-tutorial/02-Launching-Docker.html

我的问题如下:有没有办法在这个容器中执行我的R脚本继承主机操作系统的权限?访问使用Windows身份验证的MSSQL数据库似乎特别棘手.....

containers r windows-authentication docker

12
推荐指数
1
解决办法
3404
查看次数

在R正则表达式中突破一个特殊字符?

尽管阅读了R regex帮助页面

最后,要包含一个文字 - ,将它放在第一个或最后一个(或者,仅对perl = TRUE,在它前面加一个反斜杠).

我无法理解之间的区别

grepl(pattern=paste("^thing1\\-",sep=""),x="thing1-thing2")
Run Code Online (Sandbox Code Playgroud)

grepl(pattern=paste("^thing1-",sep=""),x="thing1-thing2")
Run Code Online (Sandbox Code Playgroud)

两者都返回TRUE.我应该逃避还是不在这里?什么是最佳做法?

regex r hyphen

11
推荐指数
2
解决办法
7537
查看次数

如何在SQL Server中的滑动窗口上聚合(计算不同的项目)?

我目前正在使用此查询(在SQL Server中)每天计算唯一项目的数量:

SELECT Date, COUNT(DISTINCT item) 
FROM myTable 
GROUP BY Date 
ORDER BY Date
Run Code Online (Sandbox Code Playgroud)

如何对此进行转换以获取过去3天(包括当天)中每个日期的唯一商品数量

输出应该是一个包含2列的表:一列包含原始表中的所有日期.在第二列,我们有每个日期的唯一项目数.

例如,如果原始表是:

Date        Item  
01/01/2018  A  
01/01/2018  B  
02/01/2018  C  
03/01/2018  C    
04/01/2018  C
Run Code Online (Sandbox Code Playgroud)

根据我上面的查询,我目前获得每天的唯一计数:

Date        count  
01/01/2018  2  
02/01/2018  1  
03/01/2018  1  
04/01/2018  1
Run Code Online (Sandbox Code Playgroud)

我希望得到3天滚动窗口的独特计数:

Date        count  
01/01/2018  2  
02/01/2018  3  (because items ABC on 1st and 2nd Jan)
03/01/2018  3  (because items ABC on 1st,2nd,3rd Jan)    
04/01/2018  1  (because only item C on 2nd,3rd,4th Jan)    
Run Code Online (Sandbox Code Playgroud)

sql sql-server count aggregate-functions sliding-window

11
推荐指数
3
解决办法
1494
查看次数