标签: idiomatic

ddply +总结了在大量列中重复相同的统计函数

好的,快速连续的第二个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)

基本上我通常会使用ddplysummarize计算合奏的组合(例如全年每小时的平均值).

在上面的例子中,我将创建一个类别,例如小时(例如strptime(data$Timestamp,"%H") -> data$hour,然后使用该类别ddply,比如ddply(data,"hour", summarize, St_01=mean(St_01), St_02=mean(St_02)...)按每个列的类别平均.

但这里是粘性的地方.我有超过40列要处理,我不准备将它们作为参数逐个输入summarize.我曾经在shell中编写一个循环来生成这个代码,但这不是程序员如何解决问题的呢?

所以祈祷告诉,有没有人有更好的方法来实现相同的结果,但更少的击键?

r idiomatic multiple-columns plyr split-apply-combine

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

读取文件并获取字符串数组

我想读取一个文件并找回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)

有些事情对我来说似乎不是最理想的:

  • 两个单独的错误检查用于读取文件.
  • 将整个文件读取到a String,将被丢弃.如果我只想要前N行,这将特别浪费.
  • 制作一条&str将被丢弃的每行,而不是以某种方式直接从文件到String每行.

如何改进?

idiomatic rust

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

在Ruby中使用括号的习惯用法

array.include? 'foo' or array.include? 'bar'
Run Code Online (Sandbox Code Playgroud)

是语法错误(意外的keyword_or).圆括号解决了这个问题,但由于我是Ruby的新手,我不知道以下哪一个被认为是更惯用的:

选项1

array.include?('foo') or array.include?('bar')
Run Code Online (Sandbox Code Playgroud)

选项2

(array.include? 'foo') or (array.include? 'bar')
Run Code Online (Sandbox Code Playgroud)

这取决于个人偏好,还是一种被认为更"正确"的方法?

ruby idiomatic parentheses

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

在向量中交换两个元素的惯用方法是什么?

是否有更好或更简洁的方法来执行以下操作?

(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)

vector idiomatic clojure

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

使用nnet进行预测,我做得对吗?

我对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)

r machine-learning idiomatic neural-network

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

如何在API中替换vector &lt;uint8_t&gt; :: const_iterator?

我被赋予了完善编解码器库接口的任务。我们使用的是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,然后通过以下方式将数据流馈送到解码器:

  1. 从文件中读取大量数据(但将来可能还会有其他来源),并将其附加到vector<uint8_t>

  2. 调用该decode函数,并为其向量传递迭代器。

  3. 如果返回Resultnew_buffer_beginbuffer_begin传递给的相同,则decode意味着缓冲区中没有足够的数据来解码任何内容,并且调用方应返回到步骤1。否则,调用方将使用已解码的MetadataPacket对象。 ,然后返回到步骤2,new_buffer_begin用于下一遍。

我对这个介面不满意,需要改善的地方:

  • 使用vector<uint8_t>::const_iterator似乎过于具体。有没有更通用的方法不强制调用者使用vector?我当时正在考虑仅使用C风格的界面;一个uint8_t *和一个长度。有没有相当通用的C ++替代品?

  • 如果有足够的数据来解码某些内容,则只有metadata packet将有一个值。我认为std::variant2个回调(每种类型一个)将使此代码更具自说明性。我不确定哪个更惯用。每种方法的优缺点是什么,是否有更好的方法?

c++ idiomatic binary-data c++17

17
推荐指数
3
解决办法
922
查看次数

学习Elisp - 阅读源代码的最高质量库是什么?

在学习新的编程语言时,"阅读源代码"是专家们收到的常见建议.然而,像emacs这样庞大的系统,由许多人构建了数十年,初学者想出哪些库是惯用的Elisp编程的最佳例子并不容易.因此,我想就以下标准提出一些建议:

  • 惯用的elisp编程风格

  • 遵守emacs编程指南

  • 根据emacs指南巧妙地使用cl-package

  • 巧妙地使用eieio-package

  • 单个.el文件库的示例性组织

  • 多文件/多包库的示例性组织

  • 您认为重要的任何标准

给出的理由,为什么你推荐某些库自动教学研究肯定会信息在的Emacs Lisp编程初学者.

emacs styles elisp idiomatic

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

clojure中的惯用配置管理?

在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

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

什么时候`new Error()`比`Error()`更好?

ES5语言规范清楚地表明它的Error(foo)作用与此相同new Error(foo).

但我注意到,在野外,较长的new Error(foo)形式更常见.

这有什么理由吗?

是否有使用new Error(foo)优先使用的情况Error(foo)

javascript error-handling idiomatic

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

如何计算可迭代中的非null元素?

我正在为以下代码片段寻找更好/更多的Pythonic解决方案

count = sum(1 for e in iterable if e)
Run Code Online (Sandbox Code Playgroud)

python iterator list-comprehension idiomatic

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