小编Sam*_*Sam的帖子

用R链接的方法

是否可以在R中链接函数?

样本数据:

m <- matrix(c(1:10, 11:20), nrow = 10, ncol = 2)
Run Code Online (Sandbox Code Playgroud)

例如,我想替换以下语句:

step1 <- mean(m)
step2 <- sum(step1)
res <- step2
Run Code Online (Sandbox Code Playgroud)

要么,

res <- sum(mean(m))
Run Code Online (Sandbox Code Playgroud)

有这样的事情:

res <- m@mean()@sum()
Run Code Online (Sandbox Code Playgroud)

在某些情况下,这将大大澄清我的代码.

EDIT1这是一个虚拟的例子.我随机选择了'sum'和'mean'.

Ben使用%@%给出了第一个答案,但它阻止在函数中使用额外的参数:

m %@% function1(arg1, arg2) %@% function2(arg1, arg2)
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?

EDIT2添加一个例子

require(xts)
require(PerformanceAnalytics)
xts.ts <- xts(rnorm(231),as.Date(13514:13744,origin="1970-01-01"))
plot(na.omit(lag( rollapply(xts.ts, width=rolling.per-1, FUN= function(x){sqrt(var(x))*sqrt(252)}), k=1)), main = "Dummy Example")
Run Code Online (Sandbox Code Playgroud)

这个例子似乎适用于Charles解决方案:

`%@%` <- function(x, f) eval.parent(as.call(append(as.list(substitute(f)), list(x), 1)))
xts.ts %@% rollapply( width = rolling.per-1, FUN= function(x) x%@%var%@%sqrt * sqrt(252) ) %@% lag( k=1) …
Run Code Online (Sandbox Code Playgroud)

r method-chaining

10
推荐指数
4
解决办法
2783
查看次数

R作业排队/工作负载管理

我花了一些时间在Google上寻找R的排队/负载均衡器包.

我想要实现的目标:

  • 从远程前端执行多个独立的R函数独立
  • 利用2个双核服务器作为R后端

知道:

  • 每个功能通常在10到30秒内处理
  • 平均每5分钟(但它可以同时)将一组8-15个要执行的函数发送到后端(排队等待处理:先进先出).5分钟是平均值,也可以同时发送几组
  • 2x2 R实例已经运行,加载了所需的包,它们总是相同的,所以不需要一直重新加载它们
  • 输入的数据输入量非常低:最大50k

这里没有代码并行化主题(雪,降雪foreach,condor和其他传统的集群解决方案)

你知道一个专为R设计的好包装/工具吗?

非常感谢 !

r queuing workload job-scheduling

6
推荐指数
1
解决办法
639
查看次数

从其他列表中的项目命名列表

这可能是一个非常简单的问题,但我无法解决我的问题.以下代码返回错误:

person = c("name", "surname")
list(person[1]= "John")

Error : '=' unexpected in "list(person[1]="
Run Code Online (Sandbox Code Playgroud)

我希望它返回:

$name
[1] "John"
Run Code Online (Sandbox Code Playgroud)

StackOverflow能帮我解决这个问题吗?

r

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

我的类继承pyseonic正确的列表类方法的方式是什么?

一个小例子将有助于澄清我的问题:

我定义了两个类:Security和Universe,我想表现为Secutity对象列表.

这是我的示例代码:

class Security(object):
    def __init__(self, name):
        self.name = name

class Universe(object):
    def __init__(self, securities):
        self.securities = securities

s1 = Security('name1')
s2 = Security('name2')
u = Universe([s1, s2])
Run Code Online (Sandbox Code Playgroud)

我希望我的Universe类能够使用通常的列表功能,例如enumerate(),len(),__ getitem __()......:

enumerate(u)
len(u)
u[0]
Run Code Online (Sandbox Code Playgroud)

所以我把我的班级定义为:

class Universe(list, object):
    def __init__(self, securities):
        super(Universe, self).__init__(iter(securities))
        self.securities = securities
Run Code Online (Sandbox Code Playgroud)

它似乎工作,但它是适当的pythonic方式吗?

[编辑]

当我对列表进行子集时,上述解决方案无法正常工作:

>>> s1 = Security('name1')
>>> s2 = Security('name2')
>>> s3 = Security('name3')
>>> u = Universe([s1, s2, s3])
>>> sub_u = u[0:2]
>>> type(u)
<class '__main__.Universe'>
>>> type(sub_u)
<type 'list'> …
Run Code Online (Sandbox Code Playgroud)

python python-2.7

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

为什么使用Pandas.to_datetime进行日期转换比某些替代方案要慢得多?

执行性能分析时,我非常惊讶地认为pd.to_datetime它是对性能的一大阻力(在我的用例中花费了91秒,耗费了91秒).所以我可能没有像我应该那样使用这个功能.

简单的示例情况,我需要转换timestamp = 623289600000000000L为日期/时间戳格式.

import datetime
import time
import pandas as pd
timestamp = 623289600000000000L

timeit pd.to_datetime(timestamp, unit = 'ns')
10000 loops, best of 3: 46.9 us per loop

In [3]: timeit time.ctime(timestamp/10**9)
1000000 loops, best of 3: 904 ns per loop

timeit time.localtime(timestamp/10**9)
1000000 loops, best of 3: 1.13 us per loop

timeit datetime.datetime.fromtimestamp(timestamp/10**9)
1000000 loops, best of 3: 1.51 us per loop

timeit datetime.datetime.utcfromtimestamp(timestamp/10**9)
1000000 loops, best of 3: 1.29 us per loop
Run Code Online (Sandbox Code Playgroud)

我知道这些函数每个返回一个不同的对象,但是 …

python pandas

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