小编nat*_*sau的帖子

Rstudio和R终端提供不同的输出

在Rstudio中(使用R 3.1.1)运行时,

length(unique(sort(c(outer(2:100,2:100,"^")))))
# 9220 
Run Code Online (Sandbox Code Playgroud)

在R 3.1.1中,当我运行时,

length(unique(sort(c(outer(2:100,2:100,"^")))))
# 9183
Run Code Online (Sandbox Code Playgroud)

(正确的输出是9183)

我无法弄清楚为什么......非常感谢帮助

r unique rstudio

8
推荐指数
1
解决办法
797
查看次数

R:深层复制一个函数参数

请考虑以下代码

i = 3
j = i
i = 4 # j != i
Run Code Online (Sandbox Code Playgroud)

但是,我想要的是

i = 3
f <- function(x, j=i) 
    x * j
i = 4
f(4) # 16, but i want it to be 12
Run Code Online (Sandbox Code Playgroud)

如果您想知道我为什么要这样做,您可以考虑这个代码 - 应用程序是一个多减量模型.转换矩阵的对角线是该行中其他减量的总和.我想定义我需要的减量,而不是使用这些减量来计算其他函数.在这种情况下,我只需要uxt01和uxt10,从这些我想生成函数uxt00和uxt11.我想要一些可以扩展到更高维度的东西.

Qxt <- matrix(c(uxt00=function(t=0,x=0) 0,
                uxt01=function(t=0,x=0) 0.05,
                uxt10=function(t=0,x=0) 0.07
                uxt11=function(t=0,x=0) 0), 2, 2, byrow=TRUE)

Qxt.diag <- function(Qxt) {
    ndecrements <- length(Qxt[1,])
    for(index in seq(1, N, N+1)) { # 1, 4
        Qxt[[index]] <- function(t=0, x=0, i=index, N=ndecrements) {
            row <- ceiling(index/ndecr) …
Run Code Online (Sandbox Code Playgroud)

arguments r deep-copy

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

按行填充多维数组

在提出这个问题之前,我会指出这里有类似的问题,但这个帖子并没有真正回答我的问题.

考虑以下维数组:

 1D: [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]
 2D: [[1,2,3,4,5,6,7,8], [9,10,11,12,13,14,15,16]]
 3D: [[[1,2,3,4],[5,6,7,8]], [[9,10,11,12],[13,14,15,16]]]
 4D: [[[[1,2],[3,4]], [[5,6],[7,8]], [[[9,10],[11,12]], [[13,14],[15,16]]]]
 ...
Run Code Online (Sandbox Code Playgroud)
  • 1D阵列的长度为16
  • 2D阵列是2x8
  • 3D阵列是2x2x4
  • 4D阵列是2x2x2x2

假设我想创建数组.对于前两个,我可以在R中做这样的事情

oneD <- array(1:16, dim=16) # class(oneD) = array
twoD <- array(1:16, dim=8) # class(twoD) = matrix
Run Code Online (Sandbox Code Playgroud)

但是,twoD数组现在表示为

[[1,3,5,7,9,11,13,15], [2,4,6,8,10,12,14,16]]
Run Code Online (Sandbox Code Playgroud)

我知道有两种解决方法.

twoD <- aperm(array(1:16, dim=8))
twoD <- matrix(1:16, nrow=2, byrow=TRUE)
Run Code Online (Sandbox Code Playgroud)

但是,这些方法不适用于填充3D和4D阵列.我在下面填写它们,但我希望它们符合我上面的定义.

threeD <- array(1:16, dim=c(2,2,4)) # class(threeD) = array
fourD <- array(1:16, dim=c(2,2,2,2)) # class(fourD) = array
Run Code Online (Sandbox Code Playgroud)

编辑

bgoldst的回答让我意识到,实际上精子确实可以满足我的需要.

threeD <- aperm(array(1:16, dim=c(2,2,4))
# threeD[1,1,1] = 1
# …
Run Code Online (Sandbox Code Playgroud)

arrays r vector matrix multidimensional-array

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

在函数C ++中删除对象

我有一个简单的问题。

考虑下面的代码:

#include <iostream>

struct Node {
    int data;
    Node *left;
    Node *right;
    Node(int pData) : data(pData), left(nullptr), right(nullptr) {}
};

void delete_node(Node *node) {
    delete node;
    node = nullptr;
}

int main() {
    Node *node1 = new Node(1);
    Node *node2 = new Node(2);
    delete_node(node1);
    delete node2;
    node2 = nullptr;
    if (node1) std::cout << "node1: " << node1->data << std::endl;
    if (node2) std::cout << "node2: " << node2->data << std::endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

产生输出:

node1: -572662307
Run Code Online (Sandbox Code Playgroud)

自从我设置node1 = nullptr …

c++

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

Qt - 不要在 QVBoxLayout 中拉伸小部件

问题

当我在 Qt 中拖动以调整窗口大小时,它会拉伸 QVBoxLayout 内的小部件。我想避免这种情况。

以下是演示应用程序的几张图片(为此 stackoverflow 帖子创建):

屏幕截图:小部件多于空间(按预期工作 -> 向下滚动以查看内容)

小部件多于空间

屏幕截图:小部件少于空间(问题 - Qt 正在拉伸我的 AccountWidget 项目)

小部件少于空间

如何使用 Qt Layouts 或其他 Qt Widget 类来解决这个问题?这是我的演示应用程序的代码(大约 50 行):

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget, QVBoxLayout, \
    QGroupBox, QGridLayout, QLabel, QScrollArea
from typing import List

class AccountWidget(QWidget):
    def __init__(self, data: dict, parent=None):
        super().__init__(parent)        
        self.group_box_layout = QGridLayout()
        for i, (key, value) in enumerate(data.items()):
            self.group_box_layout.addWidget(QLabel(key), i+1, 1)
            self.group_box_layout.addWidget(QLabel(value), i+1, 2)
        self.group_box = QGroupBox()
        self.group_box.setLayout(self.group_box_layout)
        self.main_layout = QVBoxLayout()
        self.main_layout.addWidget(self.group_box)
        self.setLayout(self.main_layout)

class AccountListWidget(QWidget):
    def …
Run Code Online (Sandbox Code Playgroud)

python qt pyqt5

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

R - Log不完全Gamma函数的导数

R中提供以下功能:

  • gamma 计算伽马函数
  • digamma 计算log gamma函数的导数
  • pgamma 计算不完整的伽马函数
  • ?计算对数不完全伽马函数的导数

我想知道什么函数可以计算log不完整伽马函数的导数.我注意到gsl包有一个函数gamma_inc但不知道如何计算这个函数的日志的导数.

如果不存在函数,是否有一种简单的方法可以近似这个导数R

r gamma-function

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

确保float小于C++的两倍

这就是我想要做的事情:

取一个双(介于-1和1之间)并将其投射到浮子上.但我想确保浮动总是小于双倍.

有没有直接的方法来做到这一点?

作为参考,这是我想出的东西.

float DoubleToSmallerFloat (double X) // ex. X = 0.79828470019999997
{
    float  Y = X; // 0.79828471 -> note this is greater than X

    double Diff = X - Y;
    return Y - Abs (Diff) * 10;
}
Run Code Online (Sandbox Code Playgroud)

c++ floating-point

0
推荐指数
1
解决办法
119
查看次数