小编Kon*_*lph的帖子

将表更改为不带空格的字符向量

我们有以下数据:

df <- data.frame(c("a", "c ","e "), c("b ", "d", "f "))
colnames(df) <- c("X1", "X2")
df
  X1 X2
1  a b 
2 c   d
3 e  f
Run Code Online (Sandbox Code Playgroud)

如何将给定的data.frame转换为一个没有空格的字符向量?

#Expected result:
#vector
#[1]"abcdef"
Run Code Online (Sandbox Code Playgroud)

r vector character dataframe

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

用自定义条件包装 printf

如果某些条件为真,我只想打印 printf。我知道 printf 是一个可变参数函数,但遗憾的是我似乎无法在这里找到任何解释我可以包装它的线程。

基本上我写的代码中的每一个:

printf(" [text and format] ", ... args ...);
Run Code Online (Sandbox Code Playgroud)

我想写一些类似的东西

my_custom_printf(" [text and format] ", ... args ...);
Run Code Online (Sandbox Code Playgroud)

然后是这样实现的:

int my_custom_printf(const char* text_and_format, ... args ...)
{
    if(some_condition)
    {
        printf(text_and_format, ... args...);
    }
}
Run Code Online (Sandbox Code Playgroud)

条件的第一个版本将独立于 args(它将在某个全局变量上),但将来可能会成为需要的条件一个参数。

无论如何,现在我只需要... args ...原型中的语法和my_custom_printf.

我正在使用 GCC,但我不知道哪个 C 标准 - 但我们可以尝试一下。

c customization printf variadic-functions

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

检查对象是否为十进制的正确方法

对于int对象,可以这样使用cpython的cimported函数:

%%cython
from decimal import Decimal
from cpython cimport PyLong_Check

val_decimal = Decimal(1)
print(PyLong_Check(val_decimal))
Run Code Online (Sandbox Code Playgroud)
False
Run Code Online (Sandbox Code Playgroud)

但似乎没有对应的功能decimal

另一种方法是这样使用try-except

%%cython
from decimal import Decimal
from cpython cimport PyFloat_Check

cdef bint check(object val):
    if PyFloat_Check(val):
        return False
    try:
        float(val)
        return True
    except:
        return False

val_decimal = Decimal(1.1)
val_float = 1.1    
print (check(val_decimal))
print (check(val_float))
Run Code Online (Sandbox Code Playgroud)
True
False
Run Code Online (Sandbox Code Playgroud)

但这不仅会捕获decimal所有可能转换为的内容float。例如,也check("1.1")返回True(可能也排除了'str',check()但这看起来仅是'替代方法'-无法保证check()现在在上触发decimal)。

那么检查decimalcython 的正确方法是什么?

python types cython

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

虚拟类继承对象大小问题

在这里,在这段代码中,ob1的大小为16,这很好(由于虚拟指针),但我不明白为什么ob2的大小为24。

#include <iostream>
using namespace std;
class A {
    int x;
};
class B {
    int y, z;
};
class C : virtual public A {
    int a;
};
class D : virtual public B {
    int b;
};
int main() {
    C ob1;
    D ob2;
    cout << sizeof(ob1) << sizeof(ob2) << "\n";
}
Run Code Online (Sandbox Code Playgroud)

我预计ob2的大小为20,但输出为24

c++ virtual-inheritance memory-layout vptr

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

返回值的“三元逻辑”:foo、bar 或 error

我有两种不同的 JSON 结构可以从中检索特定的对象值,基本上是这样的

{
    "one": {
        "foo": {
            "bar": "baz"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

还有一个这样的

{
    "two": {
        "foo": {
            "bar": "qux"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我想bar在两种情况下都返回值加上一个额外的返回变量error,以防 case 1  baz- 也没有 case 2  qux- 匹配任何东西(即匹配null)。

仅使用 jq 1.6 有没有一种简单的方法可以做到这一点?

更新: 以下是实际 JSON 文件的片段:

/* manifest.json, variant A */
{
    "browser_specific_settings": {
        "gecko": {
            "id": "{95ad7b39-5d3e-1029-7285-9455bcf665c0}",
            "strict_min_version": "68.0"
        }
    }
}

/* manifest.json, variant B */
{
    "applications": {
        "gecko": {
            "id": "j30D-3YFPUvj9u9izFoPSjlNYZfF22xS@foobar",
            "strict_min_version": "53.0" …
Run Code Online (Sandbox Code Playgroud)

json batch-processing jq

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

如何重复列表多次

假设我有一个清单

x <- as.list(c("john","jerry","james"))
Run Code Online (Sandbox Code Playgroud)

和值列表

y <- as.list(c(8,5,10))
Run Code Online (Sandbox Code Playgroud)

我想遍历x的第一个元素,y的第一个元素的次数,并在最后添加一个后缀。因此,对于元素john,它将为john_1,john_2 ... john_8。那么jerry就是jerry_1,jerry_2 ... jerry_5。还有james_1,james_2,...,james_10

这是我尝试过的不起作用的

z <- lapply(x, function(i){paste(i,"_",rep(max))})
Run Code Online (Sandbox Code Playgroud)

但这并不能满足我的需求。

也许,我不应该使用lapply或map *的某些版本,但不要在这些基础上进行工作。

r

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

为什么在定义结构优先级队列时使用向量?

我知道我们可以通过以下方式定义结构的优先级队列 -

std::priority_queue<somestructure, vector<somestructure>, compare> pq;
Run Code Online (Sandbox Code Playgroud)

其中compare是包含比较函数的结构。我想问为什么我们需要使用向量作为这个声明中的第二个参数。在定义上述优先级队列时,向量与优先级​​队列有何关系?

c++

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

是否可以删除除所选文本之外的所有内容?

例如,我们有文本:

\n
<Text>Test_request</Text>\n
Run Code Online (Sandbox Code Playgroud)\n

命令vit将s\xc3\xa9lect所有内部标签,如何仅删除标签?

\n

vim

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

Enumerable Count 方法在循环中的性能

我有一系列由以下表示的项目IEnumerable

我需要循环遍历这些项目,它应该是 afor-loop因为索引很重要。

我的问题是,以下两个选项之间的性能有区别吗?

1.

for (int i = 0; i < items.Count(); i++)
{
    //Do something
}
Run Code Online (Sandbox Code Playgroud)
var itemsLength = items.Count();

for (int i = 0; i < itemsLength; i++)
{
    //Do something
}
Run Code Online (Sandbox Code Playgroud)

换句话说,该方法是否items.Count()在选项 1 中的每次迭代中一次又一次地运行?

.net c# performance ienumerable for-loop

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

并行线程 python GIL 与 Java

我知道Python有一个GIL,它使得线程不能同时运行,因此线程只是上下文切换。

为什么java不一样?每种语言的同一 CPU 上的线程不能并行运行。

  1. 在java中创建新线程是否利用多核机器中的核心?

  2. 与 java 相比,python 只能在同一 CPU 上生成线程?

  3. 如果 1. 是这种情况,当使用比 CPU 更多的线程时,即使在 java 中,也会再次返回其中几个线程的上下文切换?

  4. 如果 1. 是这样的话,那么它与多处理有何不同?因为不能保证利用多个核心?

  5. 线程的全部意义不就是能够使用相同的内存空间吗?如果java确实在多个线程中运行其中一些以实现并行性,那么它们如何真正共享内存?

谢谢

python java parallel-processing multithreading gil

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