小编Mer*_*rik的帖子

循环在R降价

我有一个像这样的R降价文件:

The following graph shows a histogram of variable x:

```{r}
hist(x)
```
Run Code Online (Sandbox Code Playgroud)

我想介绍一个循环,所以我可以为多个变量做同样的事情.假设有这样的东西:

for i in length(somelist) {
  output paste("The following graph shows a histogram of somelist[[" , i, "]]")
  ```{r}
  hist(somelist[[i]])
  ```
Run Code Online (Sandbox Code Playgroud)

这甚至可能吗?

PS:更大的计划是创建一个程序,该程序将遍历数据框并自动为每列生成适当的摘要(例如直方图,表格,箱形图等).然后,该程序可用于自动生成降价文档,其中包含在查看第一个数据的数据时要进行的探索性分析.

markdown r r-markdown

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

引导程序中的嵌套选项卡

我在Bootstrap中嵌套了标签,这里是代码:http://jsfiddle.net/RLdYC/

$("ul.nav-tabs a").click(function (e) {
  e.preventDefault();
  $(this).tab('show');
});
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/>



<div class="tabbable boxed parentTabs">
    <ul class="nav nav-tabs">
        <li class="active"><a href="#set1">Tab 1</a>
        </li>
        <li><a href="#set2">Tab 2</a>
        </li>
    </ul>
    <div id="myTabContent" class="tab-content">
        <div class="tab-pane fade active in" id="set1">
            <div class="tabbable">
                <ul class="nav nav-tabs">
                    <li class="active"><a href="#sub11">Tab 1.1</a>
                    </li>
                    <li><a href="#sub12">Tab 1.2</a>
                    </li>
                </ul>
                <div id="myTabContent" class="tab-content">
                    <div class="tab-pane fade active in" id="sub11">
                        <p>Tab 1.1</p>
                    </div>
                    <div class="tab-pane fade" id="sub12">
                        <p>Tab 1.2</p>
                    </div>
                </div>
            </div> …
Run Code Online (Sandbox Code Playgroud)

javascript jquery twitter-bootstrap

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

为一次性临时表建立索引

一位同事在一家使用 Microsoft SQL Server 的企业工作。他们的团队创建每天执行的存储过程以创建数据提取。基础表很大(有些有数十亿行),因此大多数存储过程的设计都是这样的:首先它们仅将这些巨大表的相关行提取到临时表中,然后临时表彼此连接并与其他较小的表连接。表来创建最终的摘录。与此类似的东西:

SELECT COL1, COL2, COL3
INTO #TABLE1
FROM HUGETABLE1
WHERE COL4 IN ('foo', 'bar');

SELECT COL1, COL102, COL103
INTO #TABLE2
FROM HUGETABLE2
WHERE COL14 = 'blah';

SELECT COL1, COL103, COL306
FROM #TABLE1 AS T1
JOIN #TABLE2 AS T2
ON T1.COL1 = T2.COL1
LEFT JOIN SMALLTABLE AS ST
ON T1.COL3 = ST.COL3
ORDER BY T1.COL1;
Run Code Online (Sandbox Code Playgroud)

通常,临时表在创建后不会被修改(因此没有后续的 ALTER、UPDATE 或 INSERT 操作)。出于本讨论的目的,我们假设临时表稍后仅使用一次(因此只有一个 SELECT 查询会依赖它们)。

这里的问题是:在创建这些临时表之后以及在后续查询中使用它们之前对这些临时表建立索引是一个好主意吗?

我的同事认为,创建索引将使联接和排序操作更快。不过,我相信总时间会更长,因为创建索引需要时间。换句话说,我假设除了边缘情况(例如临时表本身非常大,或者最终的 SELECT 查询非常复杂)之外,SQL Server 将使用临时表上的统计信息来优化最终查询,这样做时,它将有效地索引临时表,因为它认为合适。

换句话说,我习惯于认为只有当你知道表经常被使用时,创建索引才有用;一旦存储过程完成就被删除的一次性临时表不值得建立索引。

我们对 SQL Server 优化器的了解都不够,无法知道我们在哪些方面是对的,哪些方面是错的。您能否帮助我们更好地理解哪些假设更接近事实?

sql-server indexing stored-procedures temp-tables

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

Windows上的Git GUI:合并冲突

我在命令行上熟练使用Git但是对于特定的项目,我需要向其他人展示如何在GUI环境中专门做事.我们正在使用Git for Windows(可从https://git-scm.com/download/win获得).

我创建了一个文件并添加到存储库中.然后有另一个用户修改文件并推送它.我还修改了文件,然后从origin获取了存储库,并使用"Merge> Local Merge"菜单来显示Git GUI如何查找冲突.

然后我手动编辑了文本文件并通过挑选我的一些更改以及其他用户的一些更改来解决冲突.在这个阶段,如果是命令行,我会做"git add".在GUI中你应该使用"Stage Changed"按钮执行相同的操作,我猜,但是当我按下按钮时,它实际上并不会暂存更改的文件.

我找不到任何有关处理合并冲突解决方案的GUI程序的在线文档.任何人都可以告诉我GUI环境中的下一步是什么?

git git-gui merge-conflict-resolution

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

将引导网格宽度增加到 1170 像素以上

有没有办法将 Bootstrap 3 网格的宽度增加到 1170 以上?我的用户经常使用支持 1920 x 1080 分辨率的设备。我想保持响应性(以防窗口未最大化),但是每当窗口宽度大于 1600 像素时,我希望网格系统的宽度为 1600 像素。

有没有办法为大于 1600px 的窗口向网格系统添加另一个“步骤”?最好不使用 LESS,只需添加一些自定义 CSS 来覆盖原始 Bootstrap 规则?

twitter-bootstrap-3

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

LEFT OUTER JOIN 且仅返回第一个匹配项

想象一下以下两个表,分别命名为“Users”和“Orders”:

ID  NAME
1   Foo
2   Bar
3   Qux


ID  USER  ITEM  SPEC  TIMESTAMP
1   1     12    4     20150204102314
2   1     13    6     20151102160455
3   3     25    9     20160204213702
Run Code Online (Sandbox Code Playgroud)

我想要得到的输出是:

USER   ITEM  SPEC  TIMESTAMP
1      12    4     20150204102314
2      NULL  NULL  NULL
3      25    9     20160204213702
Run Code Online (Sandbox Code Playgroud)

换句话说:在用户和订单之间执行 LEFT OUTER JOIN,如果您没有找到该用户的任何订单,则返回 null,但如果找到一些,则仅返回第一个订单(基于时间戳的最早订单) 。

如果我只使用 LEFT OUTER JOIN,它将为用户 1 返回两行,我不希望这样。我想过将 LEFT OUTER JOIN 嵌套在另一个选择中,该选择将按其他字段进行分组并获取 MIN(TIMESTAMP) 但这也不起作用,因为我需要在我的分组依据中包含“SPEC”,并且因为这两个订单有不同的规格,它们仍然都出现。

任何有关如何实现预期结果的想法都将受到赞赏。

sql sql-server left-join outer-join

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

推送后压缩提交

想象一个具有以下提交的 git 存储库:

Fixed issue 3               123eabc
Fixed issue 2 (part 2)      fa23b79
Fixed issue 2 (part 1)      7bea5cc
Fixed issue 1               0d229f4
Run Code Online (Sandbox Code Playgroud)

这些都已推送到远程主服务器。现在有没有办法重写历史并将中间的两个合并为一个提交?就像是

Fixed issue 3               123eabc
Fixed issue 2               9d23e0c
Fixed issue 1               0d229f4
Run Code Online (Sandbox Code Playgroud)

git git-reset git-squash

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

BETWEEN如何合并data.table方式?

我有两个data.tables,每个大小为5-10GB.它们看起来类似于以下内容.

library(data.table)
A <- data.table(
  person = c(1,1,1,2,3,3,3,3,4,4),
  datetime = c(
    '2015-04-06 14:22:18',
    '2015-04-07 02:55:32',
    '2015-11-21 10:16:05',
    '2015-10-03 13:37:29',
    '2015-02-26 23:51:56',
    '2015-05-16 18:21:44',
    '2015-06-02 04:07:43',
    '2015-11-28 15:22:36',
    '2015-01-19 04:10:22',
    '2015-01-24 02:18:11'
  )
)

B <- data.table(
  person = c(1,1,3,4,4,5),
  datetime2 = c(
    '2015-04-06 14:24:59',
    '2015-11-28 15:22:36',
    '2015-06-02 04:07:43',
    '2015-01-19 06:10:22',
    '2015-01-24 02:18:18',
    '2015-04-06 14:22:18'
  )
)

A$datetime <- as.POSIXct(A$datetime)
B$datetime2 <- as.POSIXct(B$datetime2)
Run Code Online (Sandbox Code Playgroud)

我们的想法是在B中找到行,其中日期时间在A中匹配行的0-10分钟内(匹配由人完成)并在A中标记它们.问题是如何使用data.table最有效地完成它. ?

一个计划是仅基于[I]人[/ I]加入两个数据表,然后计算时差并找到时间差在0到600秒之间的行,最后用A加入后者:

setkey(A,person)
AB <- A[B,.(datetime,
            datetime2,
            diff = difftime(datetime2, datetime, units = "secs"))
        , by …
Run Code Online (Sandbox Code Playgroud)

performance r data.table

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

基于data.table的动态子组的计算

我的问题与groupset的子集有关,data.table但不同.

想象一下这样的数据集:

tmp <- data.table(x = 1:10, y = c(27, 70, 54, 18, 50, 44, 22, 73, 6, 5))
Run Code Online (Sandbox Code Playgroud)

对于数据的每一行,我想计算一个新值z,它是min(y)所有具有较大x值的行.例如,对于x为3的数据的第三行,我想要min(y)x> 3的行(这将是值5).出于我们的意图和目的,您可以假设数据已经按x排序.

起初我想过使用这样的函数:

min.y <- function(val, dt) {
  dt[x > val, min(y)]
}
Run Code Online (Sandbox Code Playgroud)

但是调用tmp[, z:= fun(x, tmp)]会产生一条警告信息:

In min(y) : no non-missing arguments to min; returning Inf
Run Code Online (Sandbox Code Playgroud)

这样做的正确方法是什么?

PS:显然,对于最后一行,我希望得到NA作为结果

r data.table

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

一致性矩阵

假设我有一个包含任意数量的行和列的数据集,如下所示。

tmp <- tibble(id = 1:10,
              v1 = c(0, 0, 0, 1, 1, 0, 0, 0, 0, 1),
              v2 = c(0, 0, 0, 1, 0, 0, 0, 0, 0, 1),
              v3 = c(0, 0, 0, 1, 0, 0, 0, 0, 1, 0),
              v4 = c(0, 0, 0, 1, 1, 0, 0, 0, 1, 0))
Run Code Online (Sandbox Code Playgroud)

每一行都是一个响应。受访者对特定问题的回答是是 (1) 或否 (0)。在这里,我们有 4 个问题。

将其转换为如下所示的一致性矩阵的最简单方法是什么:

   v1  v2  v3  v4
v1 3   2   1   1
v2 2   2   1   1
v3 1   1   2   2 …
Run Code Online (Sandbox Code Playgroud)

r tidyverse

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

如何确保浏览器确实向 CA 检查 SSL 证书?

我正在尝试了解 SSL 的工作原理。我的理解是,在您第一次到达服务器后(例如https://www.google.com),服务器会向您发送其公钥。然后,您的浏览器会检查以确保该公钥有效(未过期等)且合法;后者是通过与根 CA 进行检查来完成的,以确保公钥的签名与 CA 记录的内容相匹配。如果全部检查通过,那么您的浏览器将使用该公钥加密所有内容,并且只有服务器可以解密它(因为只有服务器拥有私钥)。

现在,考虑一个精心设计的中间人攻击:每次我的浏览器尝试检查 CA 时,中间服务器都会将我的请求重新路由到另一台服务器,而不是 CA。该服务器验证任何签名!这样,即使我得到了错误的证书,我的浏览器也不会知道。例如,这意味着我的 ISP 可以向我发送虚假证书并窃听我的连接。

防止这种情况的安全措施(如果我错了,请纠正我)是,为了与 CA 检查证书,浏览器会与 CA 建立 SSL 连接,但这一次不需要验证它获得的公钥来自 CA;它知道所有 CA 的正确公钥。

但我怎么知道有人没有在我的计算机上安装假 CA 的假证书呢?我如何知道每次升级浏览器时,是否都会安装恶意软件?

security encryption ssl https

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

使用%PUT正确格式化动态文件名

我有一个SAS脚本,它读入CSV文件并将其存储在SAS数据集中:

LIBNAME IN '\\path\Data';
FILENAME CSV '\\path\Data\DT.csv';

DATA IN.DT;
  INFILE CSV DLM=',' DSD FIRSTOBS=1;
  INPUT KEY VALUE1 VALUE2;
RUN;
Run Code Online (Sandbox Code Playgroud)

我想改变它,使得它不会期望输入被命名DT.csv,而是接受命名的输入DT-2016-03-03-TEST.csv,或者当前日期.换句话说,我需要在FILENAME语句中使用动态值.

这是我到目前为止:

%LET curday   = %SYSFUNC(day("&sysdate"d));
%LET curmonth = %SYSFUNC(month("&sysdate"d));
%LET curyear  = %SYSFUNC(year("&sysdate"d));

%PUT %SYSFUNC(PUTN(&curday, z2.));

FILENAME CSV "\\path\Data\DT-&curyear-&curmonth-&curday-TEST.csv";
Run Code Online (Sandbox Code Playgroud)

但它生成的字符串就像Data\DT-2016-3-3-TEST.csv而不是Data\DT-2016-03-03-TEST.csv

换句话说,尾随零不在那里.我做错了什么?

sas

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