小编Kon*_*lph的帖子

是否可以从 R 脚本内部运行 git 命令?

下面是 git 中传统工作流程的描述。

是否有可能以某种方式在 R 中编写一个脚本,让 git 执行所有脚本?这样做是否明智?非常感谢!

  1. 在项目目录中创建/修改文件。
  2. 在命令行中,通过输入 更改目录cd <path_to_local_repository>
  3. 在命令行中输入git add --all以暂存更改。
  4. git commit -m '<commit_message>'在命令行输入以将更改提交到本地存储库。
  5. git push 在命令行中输入,将更改推送到远程存储库(例如,在 Bitbucket 上)。
  6. 如果提示进行身份验证,请输入您的 Bitbucket 密码。

git r system

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

“这个特征不能被制作成一个对象,因为它需要 `Self: Sized`”,除非它有 Sized

这是错误消息:

error[E0038]: the trait `room::RoomInterface` cannot be made into an object
  --> src\permanent\registry\mod.rs:12:33
   |
12 |     pub fn load(id : String) -> Result<Box<dyn RoomInterface>, String>{
   |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `room::RoomInterface` cannot be made into an object
   |
note: for a trait to be "object safe" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
  --> src\permanent\rooms\mod.rs:36:31
   |
36 |     pub trait RoomInterface : Copy + Sized {
   |               -------------   ^^^^   ^^^^^ …
Run Code Online (Sandbox Code Playgroud)

rust

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

根据使用的字体有条件地执行宏

我是&符号的忠实粉丝 - 我非常虔诚地听取SimpleBits的建议"使用最好的&符号".

为此,我在LaTeX中定义了以下快捷方式:

\let\amp\&
\renewcommand\&{{\scalebox{1.2}{\textnormal{\fontspec{Baskerville}\itshape\amp}}}}
Run Code Online (Sandbox Code Playgroud)

简而言之,这将"正常"&符号的所有用法改为时尚的变体,例如:

This is a text \& it contains an ampersand.
Run Code Online (Sandbox Code Playgroud)

(使用\&而不仅仅是&因为LaTeX的工作方式 - 后者已经保留用于分隔表环境中的列.)

但是,这总是使用相同的字体 - 这里,Baskerville - 无论它是否适合.我想根据使用的字体系列使用不同的字体.也就是说,我想将另一个&符号与sans serif文本结合使用,特别是我想防止在monospace上下文中重写&符号.所以在以下两个上下文中,我不想触发上面的定义:

{\sffamily a \& b}
{\ttfamily a \& b}
Run Code Online (Sandbox Code Playgroud)

我怎么做?

我想象如下:

\renewcommand\&{
  \ifsans
    {\fontspec{Trebuchet MS}{\textnormal{\itshape\amp}}}
  \else
    \ifmono
      \amp
    \else
      {\fontspec{Baskerville}\scalebox{1.2}{\textnormal{\itshape\amp}}}
    \fi
  \fi}
Run Code Online (Sandbox Code Playgroud)

latex xetex

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

为什么iPhone上需要Quartz 2D文本翻转变换

来自Apple文档:

在iOS中,必须将翻转变换应用于当前图形上下文,以便将文本定向为如图16-1所示.[翻转变换]涉及反转y轴并将原点平移到屏幕的底部.清单16-2显示了如何在drawRect:iOS视图的方法中应用此类转换.然后,此方法调用MyDrawText清单16-1中的相同方法.

为什么?这看起来非常糟糕.

iphone text quartz-2d

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

一元减号运算符如何在C++中使用布尔值?

我目前正在将一些OpenCV代码从C++转换为Java.我不能使用JavaCV,因为我们需要在本机Java中进行转换,而不是JNA.在代码中的某一点,我得到以下任务:

dst[x] = (uchar)(-(kHit >= kForeground));
Run Code Online (Sandbox Code Playgroud)

dstuchar*,kHitkForegroundint秒.

我一直无法找到有关其工作原理的任何信息,Java也不会将其识别为操作.这两个变量在代码的另一个点上有一个操作,它存储两个值中的一个:255或0.

有问题的代码来自opencv/video/src/bgfg_gaussmix.cpp.

c++ unary-operator

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

这个警告与枚举类大小有关吗?

警告:

src/BoardRep.h:49:12: warning: ‘BoardRep::BoardRep::Row::<anonymous struct>::a’ 
is too small to hold all values of ‘enum class BoardRep::Piece’ 
[enabled by default]
Piece a:2;
        ^
Run Code Online (Sandbox Code Playgroud)

枚举:

enum class Piece: unsigned char {
    EMPTY,
    WHITE,
    BLACK
};
Run Code Online (Sandbox Code Playgroud)

使用:

union Row {
    struct {
        Piece a:2;
        Piece b:2;
        Piece c:2;
        Piece d:2;
        Piece e:2;
        Piece f:2;
        Piece g:2;
        Piece h:2;
    };
    unsigned short raw;
};
Run Code Online (Sandbox Code Playgroud)

如果enum我同意GCC,它可能不得不截断,但这是因为enums与整数和预处理器定义并没有真正分开.然而,一个enum class更强大.如果它不够强大,不能假设所有Piece取整数值都在0到2之间,则警告是有意义的.否则海湾合作委员会将不必要地挑剔,可能值得邮寄清单说"看,这是一个愚蠢的警告"

任何人都看不到这一点

您可以在2位数据中存储4个不同的值,我只需要3个不同的值,因此任何长度为4或更小的枚举应该很好地适合给定的2位(并且我的枚举确实"派生"(更好的术语?)来自无符号类型).如果我有5个或更多那么我会期待一个警告.

c++ enums gcc c++11

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

结合select和mutate

很多时候,我发现自己在dplyr中手动组合了select()和mutate()函数.这通常是因为我正在整理数据框,想要根据旧列创建新列,并且只想保留新列.

例如,如果我有关于高度和宽度的数据但只想使用它们来计算并保留该区域,那么我将使用:

library(dplyr)
df <- data.frame(height = 1:3, width = 10:12)

df %>% 
  mutate(area = height * width) %>% 
  select(area)
Run Code Online (Sandbox Code Playgroud)

当在mutate步骤中创建了许多变量时,可能很难确保它们都在选择步骤中.有没有更优雅的方法来保留mutate步骤中定义的变量?

我一直在使用的一个解决方法如下:

df %>%
  mutate(id = row_number()) %>%
  group_by(id) %>%
  summarise(area = height * width) %>%
  ungroup() %>%
  select(-id)
Run Code Online (Sandbox Code Playgroud)

这有效,但非常冗长,使用summarize()意味着性能受到影响:

library(microbenchmark)

microbenchmark(

  df %>% 
    mutate(area = height * width) %>% 
    select(area),

  df %>%
    mutate(id = row_number()) %>%
    group_by(id) %>%
    summarise(area = height * width) %>%
    ungroup() %>%
    select(-id)
)
Run Code Online (Sandbox Code Playgroud)

输出:

      min       lq     mean   median       uq      max neval cld
  868.822  954.053 …
Run Code Online (Sandbox Code Playgroud)

r dplyr

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

仅针对合并/特定提交消息执行作业

我不太确定 gitlab CI 工作流程应该如何实现这一点:

  1. 在我的 gitlab 存储库中,每个功能都将在自己的分支中开发。至少分支会合并到master。
  2. 我正在使用 npm package grunt-bump 来提升 package.json 的版本

我想用 gitlab CI 做什么:

  1. 对于合并到主我想做一些测试(阶段测试)
  2. 如果测试阶段成功通过,则应完成合并并grunt bump执行
  3. 这将提高版本值,并对 master 进行新的提交。此提交始终标记为“v0.0.2”,并带有“Release v0.0.2”之类的消息。仅对于这次提交,我想进入构建阶段,该阶段将构建和部署应用程序。

概括

所以 grunt bump应该只在 master 上并且在成功的测试和合并之后执行。仅对于生成的提交(Release vx.xx),应该完成构建和部署工作...

也许有一个比这个想法更聪明的工作流程。基本上我想在合并和成功测试后增加版本值并标记提交......

我对 YAML 文件的尝试

stages:
  - test
  - build
  - deploy

lint:
  image: testing:latest
  stage: test
  tags:
    - testing
  script:
    - /node_modules/.bin/eslint --ext .js --ext .jsx .

bump:
  stage: build
  tags: 
    - deploy
  script:
    - grunt bump
  only:
    - master
    - /^Merge .*$/ …
Run Code Online (Sandbox Code Playgroud)

git merge gitlab gitlab-ci

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

查找与条件匹配的相邻行

我在R中有一个金融时间序列(目前是一个xts对象,但我现在也在研究tibble).

如何找到与条件匹配的2个相邻行的概率?

例如,我想知道连续2天的概率高于平均值/中值.我知道lag前几天我可以进入下一行,这样可以让我得到这个统计数据,但这看起来非常麻烦且不灵活.

有没有更好的方法来完成这项工作?

xts样本数据:

foo <- xts(x = c(1,1,5,1,5,5,1), seq(as.Date("2016-01-01"), length = 7, by = "days"))
Run Code Online (Sandbox Code Playgroud)

连续2天高于median值的概率是多少?

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

使用 case_when() 分配两个新列,而不是一个

我有这个示例数据:

df <- tibble(
  "City1" = c("New York", "Boston", "Chicago"),
  "City2" = c("Chicago", "Cleveland", "Atlanta"))
Run Code Online (Sandbox Code Playgroud)

假设City1是起点,City2也是目的地。即,一个人从纽约旅行到芝加哥。

我想为起始纬度添加一列,为起始经度添加一列,并对目的地城市也做同样的事情。总之,我想要四个新列。我已经有了坐标。

如何分配坐标?我试过使用case_when,但我不确定如何将坐标传递到多列。做一列很容易:

library(tidyverse)

# The numbers after the cities are the latitudes
df <- df %>% 
  mutate(
   City1_lat = case_when(
    City1 == 'New York' ~ 40.7128,
    City1 == 'Boston' ~ 42.3601,
    City1 == 'Chicago' ~ 41.8781
  )
 )
Run Code Online (Sandbox Code Playgroud)

如何扩展它以添加到City1_lon列中?试图尽可能地简化这一点,因为我有几千行起点/终点。adplyrbase解决方案都有效。我会将此扩展到目的地城市City2。以供参考:

New York: 40.7128, 74.0060
Boston: 42.3601, 71.0589
Chicago: 41.8781, 87.6298
Cleveland: …
Run Code Online (Sandbox Code Playgroud)

r dplyr

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

标签 统计

r ×3

c++ ×2

dplyr ×2

git ×2

c++11 ×1

enums ×1

gcc ×1

gitlab ×1

gitlab-ci ×1

iphone ×1

latex ×1

merge ×1

quartz-2d ×1

rust ×1

system ×1

text ×1

unary-operator ×1

xetex ×1