小编luk*_*awk的帖子

如何从data.table中排除列?

我有一个data.table,并希望排除一些列.例如,

library(data.table)
dt <- data.table(a = 1:2, b = 2:3, c = 3:4, d = 4:5)
dt[ , .(b, c)]
Run Code Online (Sandbox Code Playgroud)

给我第二和第三列,b和c.我如何改为排除列b和c.来自data.frame世界,我希望如下:

dt[ , -.(b, c)]
Run Code Online (Sandbox Code Playgroud)

或者可能

dt[ , !.(b, c)]
Run Code Online (Sandbox Code Playgroud)

但是这些工作还不错.我知道我可以使用

dt[ , -c(2:3), with = FALSE]
Run Code Online (Sandbox Code Playgroud)

但这只是(据我所知)将data.table转换为data.frame,然后使用标准操作.我想避免这种情况,因为它是a)一种作弊,b)放弃data.table中可用的速度提升.我查看了data.table常见问题解答和插图,似乎找不到任何东西.

(我知道这一切都非常简单,我可以选择另外两列.但是,这是一个更大,更大的数据的缩影.我正在使用.)

r data.table

8
推荐指数
3
解决办法
7963
查看次数

我需要通过时间绘制一些2d数据(因此3d)

我有一个xts数据对象的时间:

> head(vixData[,2:8], 5)
              F1    F2    F3    F4    F5    F6    F7
2009-06-08 30.25 32.00 31.70 31.75 31.65 30.85 29.95
2009-06-09 29.10 30.95 30.95 31.15 31.10 30.40 29.45
2009-06-10 29.10 31.20 31.30 31.45 31.50 30.75 29.95
2009-06-11 28.10 30.60 30.75 30.90 31.00 30.20 29.25
2009-06-12 28.35 29.95 30.10 30.45 30.50 29.90 29.05
Run Code Online (Sandbox Code Playgroud)

F1-F7将形成一条曲线,如下所示:

plot(1:7, vixData[399,2:8], type = 'o', pch = 6)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我想通过时间来做这件事.xts对象的行是每天的值,它们生成曲线.我希望生成这样的东西:

在此输入图像描述

我正在尝试使用plot3D和surf3D,但我无法理解文档,或者如何将数据帧转换为surf3D想要的内容.任何想法或更好的包装建议?

我已经尝试按照评论中的建议使用lattice :: wireframe,但我得到以下内容:

curveData <- vixData[-(1:100),2:8, drop = FALSE]
wireframe(t(as.matrix(curveData)), shade = TRUE, scales = list(arrows = FALSE), …
Run Code Online (Sandbox Code Playgroud)

3d plot r

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

在 node.js 中使用 mssql 关闭 MSSQL 连接

我正在尝试在 node.js 中编写一个脚本来查询 MSSQL 数据库。我是 javascript 新手,node.js 新手,VSCode 新手,但我对 SQL 有一些了解。我有工作代码,但连接似乎从未关闭,我无法从函数中获取值。

所以,我有这块代码,我从npm的例子中得到:

const sql = require('mssql');
var dbConfig = {
    server:'theServer',
    database:'theDB',
    user:'un',
    password:'pw',
    port:1433
};

sql.connect(dbConfig).then(pool => {
    // Query     
    return pool.request()
    .query('select top 10 * from THE_TABLE')
}).then(result => {
    console.log(result);
}).catch(err => {
    // ... error checks
})
Run Code Online (Sandbox Code Playgroud)

这有效,我可以看到 10 个结果记录在控制台中。但是,代码永远不会停止运行。如何让连接关闭并停止?

我真的希望将结果保存到一个变量中,所以我将代码更改为:

const sql = require('mssql');
var dbConfig = {
    server:'theServer',
    database:'theDB',
    user:'un',
    password:'pw',
    port:1433
};

let theList;
sql.connect(dbConfig).then(pool => {
    // Query     
    return pool.request() …
Run Code Online (Sandbox Code Playgroud)

javascript sql-server node.js

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

python 中的 self() 是什么?

我以为我self在某种程度上理解了。但我遇到了这个:

    for f in flags:
        if f not in flagMap:
            raise error.Error('bad debug flag %s' % (f,))
        self._flags = self._flags | flagMap[f]
        self('debug category \'%s\' enabled' % f)
Run Code Online (Sandbox Code Playgroud)

有什么self(...)作用?

python self

6
推荐指数
0
解决办法
3124
查看次数

如何在字符数据框中测试数值,并将其转换为数字?

我有一个类似于以下数据框:

> theDF
   ID        Ticker INDUSTRY_SECTOR              VAR             CVAR
1   1      USD CASH                                0                0
12  2      ZAR CASH                 -181412.82055904 -301731.22832191
23  3 BAT SJ EQUITY       Financial  61711.951234826 102641.162795691
34  4 HCI SJ EQUITY       Financial 1095.16002541256 1821.50290513369
45  5 PSG SJ EQUITY       Financial 16498.2192382422  27440.331617902
Run Code Online (Sandbox Code Playgroud)

我们可以看到这些都是字符列:

> apply(theDF, 2, mode)
             ID          Ticker INDUSTRY_SECTOR             VAR            CVAR 
    "character"     "character"     "character"     "character"     "character" 
Run Code Online (Sandbox Code Playgroud)

我想要的东西只会改变数字类型向量到数字.基本上,如果它"看起来像"一个数字,请将其设为数字​​,否则保留它.我在StackOverflow上找不到任何不需要知道你想要转换的名称或列的东西.这个DF并不总是以相同的顺序,或者有列,所以我需要一些动态的方法来检查列是否"看起来像"数字并使这些列数字化.

这(显然)给了我一堆NA; s为字符列:

> apply(theDF, 2, as.numeric)
     ID Ticker INDUSTRY_SECTOR        VAR        CVAR
[1,]  1     NA              NA       0.00       0.000
[2,]  2     NA …
Run Code Online (Sandbox Code Playgroud)

r apply dataframe

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

如何引用列表中各种范围的值?

我想要做的是从列表中引用几个不同的范围,即我想要4-6个元素,12-18个元素等.这是我最初的尝试:

test = theList[4:7, 12:18]
Run Code Online (Sandbox Code Playgroud)

我希望给予的做法与:

test = theList[4,5,6,12,13,14,15,16,17]
Run Code Online (Sandbox Code Playgroud)

但是我遇到了语法错误.最好/最简单的方法是什么?

python list slice

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

如何在 R Shiny 的 navbarPage 布局中移动导航选项卡?

我在 R 方面相当有经验,但在任何类型的 Web 开发方面都没有。我正在尝试使用 Shiny。

我只是在测试它并为用户界面提供以下内容:

shinyUI(navbarPage("This is some awesome testing!!!",
                   tabPanel("Plot"),
                   tabPanel("Summary" ),
                   navbarMenu("More",
                              tabPanel("Table"),
                              tabPanel("About")
                   )
))
Run Code Online (Sandbox Code Playgroud)

这将生成一个带有导航栏的页面,如下所示,但请注意导航选项卡位于页面中间。有没有办法把它移到左边?所以它会一直对着页面的左侧?

我只是注意到调整窗口大小会使其周围移动一些并有助于将其向左移动更多,但是有没有办法让它“粘”到窗口的左侧?

在此处输入图片说明

我想有一些方法可以通过一些 css 或 html 或其他东西来强制它,但我什至不确定这些是否是正确的术语。同样,我在 Web 开发方面的经验为零。

谢谢!!

r shiny

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

如何在 Shell 中运行 SSH 以将值返回到 VBA 变量中?

我正在尝试运行 ssh 命令,并将输出捕获到 VBA 中的变量(使用 OpenSSH)。我可以让它在命令行中正常工作:

ssh user@ip python C:\Temp\Remote.py

结果是返回到命令行窗口的值列表。我想将其读入 VBA 变量。

我找到了这个这个这个。前两个似乎没有正确发送或接收命令,因为代码挂在 oShell.Exec(...) 上。外壳看起来正在执行,但它只是挂起。如果我关闭挂起的命令窗口,VBA 中的结果是空白的。

Dim sCmd As String
sCmd = "ssh user@ip python C:\Temp\Remote.py"

Dim oShell As Object
Set oShell = CreateObject("WScript.Shell")
Dim oExec As Object
Dim oOutput As Object
Set oExec = oShell.Exec(sCmd)
Set oOutput = oExec.StdOut

Dim s As String
Dim sLine As String

While Not oOutput.AtEndOfStream
    sLine = oOutput.ReadLine
    If sLine <> "" Then s = s & …
Run Code Online (Sandbox Code Playgroud)

ssh shell excel vba

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

如何在 Python 中接收来自 IBs API 的数据?

盈透证券刚刚发布了他们 API 的 Python 版本。我正在尝试获取数据。

我正在使用“Program.py”中的“示例”,只是想获取帐户值。我只想知道帐户清算价值是多少,并将其输入python。这是文档。这是创建和发送请求的代码:

        app = TestApp()
        app.connect("127.0.0.1", 4001, clientId=0)
        print("serverVersion:%s connectionTime:%s" % (app.serverVersion(),
                                                   app.twsConnectionTime()))
        app.reqAccountSummary(9004, 'All', '$LEDGER')
Run Code Online (Sandbox Code Playgroud)

我可以使用 IB 网关,并查看正在发送的请求以及返回到 IB 网关的响应。我不知道如何将响应输入 Python。如果我正确阅读文档,我会看到:

Receiving

Summarised information is delivered via IBApi.EWrapper.accountSummary and IBApi.EWrapper.accountSummaryEnd

    1 class TestWrapper(wrapper.EWrapper):
...
    1     def accountSummary(self, reqId: int, account: str, tag: str, value: str,
    2                        currency: str):
    3         super().accountSummary(reqId, account, tag, value, currency)
    4         print("Acct Summary. ReqId:", reqId, "Acct:", account,
    5               "Tag: ", tag, "Value:", value, "Currency:", currency)
    6 
...
    1     def …
Run Code Online (Sandbox Code Playgroud)

python interactive-brokers ibpy

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

ggplot闪亮切割顶部

我对Shiny很新,对ggplot来说有点新鲜.我创建了一个在RStudio中看起来很好的情节,但是当在renderPlot中使用它时,情节的顶部会被切断.我尝试更改大小(将"height = X"添加到renderPlot函数),这样可行,但fluidRows最终会在彼此之上呈现.有没有办法不切断情节的顶部?通过调整渲染大小,或以某种方式更改ggplot?

我有这个UI和服务器:

shinyUI(fluidPage(

  # Application title
  titlePanel("IGP Risk Analysis"),

  sidebarLayout(
    sidebarPanel(
      uiOutput("portfolio"),  
      uiOutput("portDate"),
      uiOutput("portMetrics"),
      uiOutput("portFields"),
      uiOutput("riskButton"),
      width = 2),

    mainPanel(
      tabsetPanel(type = "tabs", 
                  tabPanel("Summary", 
                           fluidRow(plotOutput("plots")),
                           fluidRow(dataTableOutput("summary"))),
                  tabPanel("Plots"), 
                  tabPanel("Tables", tableOutput("tables"))
      )
    )
  )
))

shinyServer(function(input, output) {

  output$portfolio <- renderUI ({
    temp <- setNames(sendRequest(theURL, myUN, myPW, action = "GetPortfolios"), "Available Portfolios")
    temp <- temp[sapply(temp, function (x) !grepl("AAA|ZZZ|Test|test",x)),]
    selectInput("portfolio", "Underlying Portfolio:", choices = c("Pick One",temp))
  })

  output$portDate <- renderUI ({
    if (is.null(input$portfolio) || input$portfolio == "Pick One") return() else { …
Run Code Online (Sandbox Code Playgroud)

plot r ggplot2 rstudio shiny

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