是否可以在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) 我花了一些时间在Google上寻找R的排队/负载均衡器包.
我想要实现的目标:
知道:
这里没有代码并行化主题(雪,降雪foreach,condor和其他传统的集群解决方案)
你知道一个专为R设计的好包装/工具吗?
非常感谢 !
这可能是一个非常简单的问题,但我无法解决我的问题.以下代码返回错误:
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能帮我解决这个问题吗?
一个小例子将有助于澄清我的问题:
我定义了两个类: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) 执行性能分析时,我非常惊讶地认为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)
我知道这些函数每个返回一个不同的对象,但是 …