小编asn*_*snr的帖子

将参数传递给dplyr函数

我想使用下面的计算参数化dplyr,找出哪些值Sepal.Length与多个值相关联Sepal.Width:

library(dplyr)

iris %>%
    group_by(Sepal.Length) %>%
    summarise(n.uniq=n_distinct(Sepal.Width)) %>%
    filter(n.uniq > 1)
Run Code Online (Sandbox Code Playgroud)

通常我会写这样的东西:

not.uniq.per.group <- function(data, group.var, uniq.var) {
    iris %>%
        group_by(group.var) %>%
        summarise(n.uniq=n_distinct(uniq.var)) %>%
        filter(n.uniq > 1)
}
Run Code Online (Sandbox Code Playgroud)

但是,这种方法会因为dplyr使用非标准评估而引发错误.应该如何编写这个函数?

r lazy-evaluation dplyr

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

macOS上的gettimeofday()是否使用系统调用?

我希望这gettimeofday()会调用系统调用来完成实际工作的时间.但是,运行以下程序

#include <stdlib.h>
#include <sys/time.h>
#include <stdio.h>

int main(int argc, char const *argv[])
{
    struct timeval tv;

    printf("Before gettimeofday() %ld!\n", tv.tv_sec);

    int rc = gettimeofday(&tv, NULL);

    printf("After gettimeofday() %ld\n", tv.tv_sec);

    if (rc == -1) {
        printf("Error: gettimeofday() failed\n");
        exit(1);
    }

    printf("Exiting ! %ld\n", tv.tv_sec);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

under dtruss -d返回一长串系统调用,最后一个是:

RELATIVE SYSCALL(args)           = return

... lots of syscalls with earlier timestamps ...

    3866 fstat64(0x1, 0x7FFF56ABC8D8, 0x11)      = 0 0
    3868 ioctl(0x1, 0x4004667A, 0x7FFF56ABC91C)      = 0 0
    3882 …
Run Code Online (Sandbox Code Playgroud)

c macos time operating-system system-calls

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

Chrome扩展程序:创建标签然后将内容脚本注入其中

收到来自内容脚本的消息后,我想创建一个新选项卡并填充它动态打开的页面(现在我只是试图将新创建的页面变为红色).

eventPage.js:

// ... code that injects another content script, works fine

// Problem code...
chrome.runtime.onMessage.addListener(
  function(request, sender, sendResponse) 
  {
    chrome.tabs.create({url: chrome.extension.getURL("blankpage.html")}, 
                       turnTabRed);      
  });

function turnTabRed(tab)
{
  chrome.tabs.executeScript(
    tab.id,
    {code: 'document.body.style.backgroundColor="red"'}
  );
}
Run Code Online (Sandbox Code Playgroud)

这成功创建了一个新的选项卡和加载blankpage.html(这只是一个带有一些文本的HTML页面)很好,但无法将背景颜色绘制为红色.console.log()在各个地方插入语句并在调试器中搞错之后,我确定turnTabRed正在调用,tab.id确实是新创建的选项卡的ID,如果我document.body.style.backgroundColor="red"从控制台调用,则新选项卡的背景变为红色.我注意到,如果我加入

(*)

chrome.tabs.query(
    {}, function (tabArr) { for (var i = 0; tabArr[i]; i++)    
                              console.log(tabArr[i].title); });
Run Code Online (Sandbox Code Playgroud)

进入turnTabRed新标签标题的主体不会被打印到控制台,这表明脚本被过早注入,所以我尝试延迟注入,setTimeout当失败时,我试着听取状态完成事件:

function turnTabRed(tab)
{
  chrome.tabs.onUpdated.addListener(
    function(tabUpdatedId, changeInfo, tabUpdated)
    {
      if (tabUpdatedId == tab.id && changeInfo.status && 
                                    changeInfo.status …
Run Code Online (Sandbox Code Playgroud)

javascript google-chrome-extension

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

C和C++中new和malloc的行为

在C中,对于调用的结果进行类型转换被认为是不好的形式malloc.但是,似乎malloc在C++ 中调用的结果应该是类型转换,即使两者都有malloc并且new返回类型void*和调用new都不是类型转换.有没有理由在C++中返回的void指针new被自动提升而返回的void指针malloc不是?

c c++ pointers

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