小编sah*_*ahn的帖子

为什么 EnumPrintersA 和 EnumPrintersW 请求相同的内存量?

我使用node-ffi调用EnumPrintersA / EnumPrintersW函数来获取可从我的 PC 访问的本地打印机列表。 您应该创建一个缓冲区,该缓冲区将由 EnumPrinters 函数填充信息。 但您不知道所需的缓冲区大小。 在这种情况下,您需要执行EnumPrintersA / EnumPrintersW两次。 在第一次调用期间,该函数计算有关打印机信息的内存量,在第二次调用期间,该函数用有关打印机的信息填充缓冲区。 对于EnumPrinters函数的 Unicode 版本,打印机名称中的每个字母将在 Windows 中使用两个字符进行编码。




为什么第一次调用EnumPrintersW返回与第一次调用EnumPrintersA相同的所需内存量?
Unicode 字符串的长度是非 unicode 字符串的两倍,但所需的缓冲区大小相同。

var ffi = require('ffi')
var ref = require('ref')
var Struct = require('ref-struct')
var wchar_t = require('ref-wchar')

var int = ref.types.int
var intPtr = ref.refType(ref.types.int)
var wchar_string = wchar_t.string

var getPrintersA =  function getPrinters() {
   var PRINTER_INFO_4A = Struct({
      'pPrinterName' : ref.types.CString,
      'pServerName' : ref.types.CString,
      'Attributes' : …
Run Code Online (Sandbox Code Playgroud)

javascript c++ ffi node.js node-ffi

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

rbind.fill 但以 R 为基数

我正在尝试找到一种有效的(运行快速且编码简单)方法来执行该rbind.fill功能,但在基本 R 中。从我的搜索来看,似乎有很多库函数,例如smartbindbind_rowsrbindon data.table,不过,如前所述,我需要一个基础 R 的解决方案。我发现使用:

df3 <- rbind(df1, df2[, names(df1)])
Run Code Online (Sandbox Code Playgroud)

从这个问题的答案来看,但它删除了列,而我希望NA添加额外的列。

如果此方法也适用于空的data.frame和已填充的方法,那就太好了,本质上只是设置返回已填充的方法。(这是为了简单起见,但如果不可能的话,如果变量为data.frame空,则将其替换为新变量并不困难。

我还希望它通过标记相同的列的列名称进行绑定。此外,第一个数据框可以比第二个数据框更大或更小,并且两者都可以具有另一个没有的列。

这是我想要的输入和输出示例(我只是编造了一些并不重要的数字)。

#inputs
a <- data.frame(aaa=c(1, 1, 2), bbb=c(2, 3, 3), ccc=c(1, 3, 4))
b <- data.frame(aaa=c(8, 5, 4), bbb=c(1, 1, 4), ddd=c(9, 9, 9), eee=(1, 2, 4))
#desired output
aaa bbb ccc ddd eee
1   2   1   NA  NA
1   3   3   NA  NA
2   3   4   NA  NA
8 …
Run Code Online (Sandbox Code Playgroud)

r rbind

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

如何在 ggplot 中添加注释

我想在我的ggplot下写一些笔记。我在 R 中做了我的数据分析,现在使用 markdown 包来写我的论文。这意味着我可以轻松地在 Markdown 脚本中包含变量。在那个脚本中,我创建了一些 ggplots 并想知道是否有一种简单的方法可以将这些解释写入情节。对于表格,它非常简单。%>% footnote(general="")诀窍。

情节有类似的东西吗?

r footnotes ggplot2

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

用于子集字符串的 Rcpp 函数

我想知道是否有一个Rcpp函数将Rcpp::String数据类型作为输入并返回字符串的给定字符(按索引)。例如,提取字符串索引 0 处的字符。这相当于c++ 中标头中string::at的方法string。我写过这个:

#include <vector>
#include <string>
#include <Rcpp.h>

using namespace Rcpp;

typedef std::vector<std::string> stringList;

int SplitGenotypesA(std::string s) {
    char a = s.at(0);
    int b = a - '0';
    return b;
}
Run Code Online (Sandbox Code Playgroud)

但不想在Rcpp::Stringstd::string类型之间进行转换。

c++ r rcpp

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

一笔非常大的金额 - 黑客排名

我正在尝试解决黑客排名上的“一笔非常大的金额”挑战:https://www.hackerrank.com/challenges/a-very-big-sum/problem

\n

在那里我必须对给出的数组中的所有数字求和,所以我想出了两个解决方案:

\n

第一个解决方案

\n
function aVeryBigSum(ar){\n  let sum = 0;\n  for(let i = 0; i < ar.length; i++){\n     sum += i;\n   }\n}\n
Run Code Online (Sandbox Code Playgroud)\n

第二种解决方案

\n
function(ar){\n let sum = ar.reduce((accumulator, currentValue) => {\n  accumulator + currentValue;\n    });\n}\n
Run Code Online (Sandbox Code Playgroud)\n

但它们都不起作用,我不\xc2\xb4t知道为什么,我想也许我没有按照黑客等级希望我写的那样,但我不确定

\n

javascript arrays reduce

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

如何快速将一个大整数分成一个单词?

我目前正在开发一个类来处理大的无符号整数。但是,我需要不完整的功能,即:

\n
    \n
  1. bi_uint+=bi_uint- 已经实施。没什么好抱怨的。
  2. \n
  3. bi_uint*=std::uint_fast64_t- 已经实施。没什么好抱怨的。
  4. \n
  5. bi_uint/=std::uint_fast64_t- 已实现,但工作速度非常,还需要两倍宽的类型uint_fast64_t。在测试用例中,除法比乘法慢35倍
  6. \n
\n

接下来,我将给出我的除法实现,它基于一个简单的长除法算法:

\n
#include <climits>\n#include <cstdint>\n#include <limits>\n#include <vector>\n\nclass bi_uint\n{\npublic:\n    using u64_t = std::uint_fast64_t;\n    constexpr static std::size_t u64_bits = CHAR_BIT * sizeof(u64_t);\n    using u128_t = unsigned __int128;\n    static_assert(sizeof(u128_t) >= sizeof(u64_t) * 2);\n\n    //little-endian\n    std::vector<u64_t> data;\n\n    //User should guarantee data.size()>0 and val>0\n    void self_div(const u64_t val)\n    {\n        auto it = data.rbegin();\n\n        if(data.size() == 1) {\n            *it /= val;\n            return;\n        }    \n        \n …
Run Code Online (Sandbox Code Playgroud)

c++ algorithm biginteger integer-division c++20

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

在运行查询之前“预测”查询结果

我有以下数据集(每个变量可以取 1-10 之间的值):

factor <- c(1,2,3,4,5,6,7,8,9,10)

var_1 <- as.factor(sample(factor, 10000, replace=TRUE, prob=c(0.1,0.1,0.1,0.1,0.1, 0.1,0.1,0.1,0.1,0.1)))
var_2 <- as.factor(sample(factor, 10000, replace=TRUE, prob=c(0.1,0.1,0.1,0.1,0.1, 0.1,0.1,0.1,0.1,0.1)))    
var_3 <- as.factor(sample(factor, 10000, replace=TRUE, prob=c(0.1,0.1,0.1,0.1,0.1, 0.1,0.1,0.1,0.1,0.1)))    
var_4 <- as.factor(sample(factor, 10000, replace=TRUE, prob=c(0.1,0.1,0.1,0.1,0.1, 0.1,0.1,0.1,0.1,0.1)))
var_5 <- as.factor(sample(factor, 10000, replace=TRUE, prob=c(0.1,0.1,0.1,0.1,0.1, 0.1,0.1,0.1,0.1,0.1)))

my_data = data.frame(var_1, var_2, var_3, var_4, var_5)

head(my_data)
  var_1 var_2 var_3 var_4 var_5
1     2     9     8     3     5
2    10     1     4     7     5
3     4     7     1     7     6
4     9     8     3     4     7
5     6 …
Run Code Online (Sandbox Code Playgroud)

r data-manipulation

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

R 中的包冲突

当我加载 tidyverse [或键入] 时,会出现一条警告消息,告诉我两个函数和tidyverse_conflicts()之间存在冲突。我们怎样才能避免这样的冲突呢?感谢您的答复!这是一个快照:dplyr::filter()dplyr::lag()

整洁宇宙冲突

r tidyverse

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

如何在 R 中的向量中有条件地添加 NA 值?

假设我的数据是df <- c("Author1","Reference1","Abstract1","Author2","Reference2","Abstract2","Author3","Reference3","Author4","Reference4","Abstract4").

这是一个系列,顺序为作者、参考文献和摘要。但在某些情况下,摘要数据会丢失。(在此示例中,缺少第三个摘要。)那么,当摘要丢失时,如何添加 NA 值来代替摘要呢?

换句话说,如果向量中的一个元素以单词“Reference”开头,但其下一个元素不以单词“Abstract”开头,我想在以“Reference”开头的元素后面添加一个 NA 值。结果向量应该是 result <- c("Author1","Reference1","Abstract1","Author2","Reference2","Abstract2","Author3","Reference3",NA,"Author4","Reference4","Abstract4") How can I do it?

我已经尝试过 R 中的追加函数,但是为了使用它,我需要有要添加 NA 的元素的索引号。因此,每个 NA 元素都需要手动输入。

r stringr

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

分割字符串而不考虑特殊字符

我需要一种方法来每 n 个字母分割一个字符串。

例如令s="QW%ERT%ZU%I%O%P"n=3,我想获得"QW%E" "RT%Z" "U%I%O" "%P"

如您所见,除法中不考虑特殊字符“%”。

我尝试过

strsplit(s, "(?<=.{10})(?=.*\\%)", perl = TRUE)[[1]]
Run Code Online (Sandbox Code Playgroud)

但我找不到办法获得我想要的东西。

regex string r strsplit

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