好的,快速连续的第二个R问题.
我的数据:
Timestamp St_01 St_02 ...
1 2008-02-08 00:00:00 26.020 25.840 ...
2 2008-02-08 00:10:00 25.985 25.790 ...
3 2008-02-08 00:20:00 25.930 25.765 ...
4 2008-02-08 00:30:00 25.925 25.730 ...
5 2008-02-08 00:40:00 25.975 25.695 ...
...
Run Code Online (Sandbox Code Playgroud)
基本上我通常会使用ddply和summarize计算合奏的组合(例如全年每小时的平均值).
在上面的例子中,我将创建一个类别,例如小时(例如strptime(data$Timestamp,"%H") -> data$hour,然后使用该类别ddply,比如ddply(data,"hour", summarize, St_01=mean(St_01), St_02=mean(St_02)...)按每个列的类别平均.
但这里是粘性的地方.我有超过40列要处理,我不准备将它们作为参数逐个输入summarize.我曾经在shell中编写一个循环来生成这个代码,但这不是程序员如何解决问题的呢?
所以祈祷告诉,有没有人有更好的方法来实现相同的结果,但更少的击键?
我想读取一个文件并找回Strings 的向量.以下功能有效,但有更简洁或惯用的方式吗?
use std::fs::File;
use std::io::Read;
fn lines_from_file(filename: &str) -> Vec<String> {
let mut file = match File::open(filename) {
Ok(file) => file,
Err(_) => panic!("no such file"),
};
let mut file_contents = String::new();
file.read_to_string(&mut file_contents)
.ok()
.expect("failed to read!");
let lines: Vec<String> = file_contents.split("\n")
.map(|s: &str| s.to_string())
.collect();
lines
}
Run Code Online (Sandbox Code Playgroud)
有些事情对我来说似乎不是最理想的:
String,将被丢弃.如果我只想要前N行,这将特别浪费.&str将被丢弃的每行,而不是以某种方式直接从文件到String每行.如何改进?
array.include? 'foo' or array.include? 'bar'
Run Code Online (Sandbox Code Playgroud)
是语法错误(意外的keyword_or).圆括号解决了这个问题,但由于我是Ruby的新手,我不知道以下哪一个被认为是更惯用的:
array.include?('foo') or array.include?('bar')
Run Code Online (Sandbox Code Playgroud)
(array.include? 'foo') or (array.include? 'bar')
Run Code Online (Sandbox Code Playgroud)
这取决于个人偏好,还是一种被认为更"正确"的方法?
是否有更好或更简洁的方法来执行以下操作?
(defn swap [v i1 i2]
"swap two positions in a vector"
(let [e1 (v i1)
e2 (v i2)]
(-> (assoc v i1 e2)
(assoc i2 e1))))
Run Code Online (Sandbox Code Playgroud) 我对R和AI/ML技术还很陌生.我想用神经网络进行预测,因为我是新手,我只想知道这是不是应该怎么做.
作为测试用例,我sin()基于之前的2个值预测值.对于训练我创建的数据帧与y = sin(x),x1 = sin(x-1),x2 = sin(x-2),然后使用公式y ~ x1 + x2.
它似乎有效,但我只是想知道这是否是正确的方法,或者是否有更惯用的方式.
这是代码:
require(quantmod) #for Lag()
requre(nnet)
x <- seq(0, 20, 0.1)
y <- sin(x)
te <- data.frame(y, Lag(y), Lag(y,2))
names(te) <- c("y", "x1", "x2")
p <- nnet(y ~ x1 + x2, data=te, linout=TRUE, size=10)
ps <- predict(p, x1=y)
plot(y, type="l")
lines(ps, col=2)
Run Code Online (Sandbox Code Playgroud)
谢谢
这对预测电话有好处吗?
t2 <- data.frame(sin(x), Lag(sin(x)))
names(t2) <- c("x1", "x2")
vv …Run Code Online (Sandbox Code Playgroud) 我被赋予了完善编解码器库接口的任务。我们使用的是C ++ 17,我只能使用标准库(即没有Boost)。当前,有一Decoder类大致如下所示的类:
class Decoder : public Codec {
public:
struct Result {
vector<uint8_t>::const_iterator new_buffer_begin;
optional<Metadata> metadata;
optional<Packet> packet;
};
Result decode(vector<uint8_t>::const_iterator buffer_begin,
vector<uint8_t>::const_iterator buffer_end);
private:
// irrelevant details
};
Run Code Online (Sandbox Code Playgroud)
调用者实例化一个Decoder,然后通过以下方式将数据流馈送到解码器:
从文件中读取大量数据(但将来可能还会有其他来源),并将其附加到vector<uint8_t>。
调用该decode函数,并为其向量传递迭代器。
如果返回Result的new_buffer_begin与buffer_begin传递给的相同,则decode意味着缓冲区中没有足够的数据来解码任何内容,并且调用方应返回到步骤1。否则,调用方将使用已解码的Metadata或Packet对象。 ,然后返回到步骤2,new_buffer_begin用于下一遍。
我对这个介面不满意,需要改善的地方:
使用vector<uint8_t>::const_iterator似乎过于具体。有没有更通用的方法不强制调用者使用vector?我当时正在考虑仅使用C风格的界面;一个uint8_t *和一个长度。有没有相当通用的C ++替代品?
如果有足够的数据来解码某些内容,则只有metadata 或 packet将有一个值。我认为std::variant2个回调(每种类型一个)将使此代码更具自说明性。我不确定哪个更惯用。每种方法的优缺点是什么,是否有更好的方法?
在学习新的编程语言时,"阅读源代码"是专家们收到的常见建议.然而,像emacs这样庞大的系统,由许多人构建了数十年,初学者想出哪些库是惯用的Elisp编程的最佳例子并不容易.因此,我想就以下标准提出一些建议:
惯用的elisp编程风格
遵守emacs编程指南
根据emacs指南巧妙地使用cl-package
巧妙地使用eieio-package
单个.el文件库的示例性组织
多文件/多包库的示例性组织
您认为重要的任何标准
给出的理由,为什么你推荐某些库自动教学研究肯定会信息在的Emacs Lisp编程初学者.
在clojure中处理应用程序配置的惯用方法是什么?
到目前为止我使用这个环境:
;; config.clj
{:k1 "v1"
:k2 2}
;; core.clj
(defn config []
(let [content (slurp "config.clj")]
(binding [*read-eval* false]
(read-string content))))
(defn -main []
(let [config (config)]
...))
Run Code Online (Sandbox Code Playgroud)
这有很多缺点:
config.clj可能无法始终正确解析路径@app/config)(当然,这可以看作是一种很好的功能样式方式,但是使得跨源文件的配置访问变得乏味.像storm这样的大型开源项目似乎使用YAML而不是Clojure,并通过一些丑陋的hack使配置可以访问全局: (eval ``(def ~(symbol new-name) (. Config ~(symbol name)))).
configuration idiomatic clojure configure configuration-management
ES5语言规范清楚地表明它的Error(foo)作用与此相同new Error(foo).
但我注意到,在野外,较长的new Error(foo)形式更常见.
这有什么理由吗?
是否有使用new Error(foo)优先使用的情况Error(foo)?
我正在为以下代码片段寻找更好/更多的Pythonic解决方案
count = sum(1 for e in iterable if e)
Run Code Online (Sandbox Code Playgroud)