小编tos*_*pig的帖子

r - 将变量作为data.table列名传递

我使用它越多data.table,替换dplyr为我的'goto'包就越多,因为它提供的速度是一大优点.

你可以i在data.table(dt[i,j])中传递变量而不创建一个expression

给出data.table:

library(data.table)
dt <- data.table(val1 = c(1,2,3),
                 val2 = c(3,2,1))
Run Code Online (Sandbox Code Playgroud)

我想评估一下:

dt[(val1 > val2)]
Run Code Online (Sandbox Code Playgroud)

但使用变量来引用列名.例如,

myCol <- c("val1", "val2")  ## vector of column names
Run Code Online (Sandbox Code Playgroud)

我已经阅读了很多问题,通过表达式显示了这样做的方法:

## create an expression to evaluate
expr <- parse(text = paste0(myCol[1], " > ", myCol[2]))

## evaluate expression
dt[(eval(expr))]

   val1 val2
1:    3    1
Run Code Online (Sandbox Code Playgroud)

但是我想知道是否有一种更"直接"的方法可以做到这一点,我错过了,类似于:

dt[(myCol[1] > myCol[2])] 
Run Code Online (Sandbox Code Playgroud)

或者是expression应该这样做的路线?

r data.table

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

r - Shiny 中的 tryCatch 错误处理

背景

我正在使用一个闪亮的应用程序cuttable一些数据。

数据集包含在shiny下面的代码中,但头部是:

> head(df_in)
  Report_Year Position   Target
1        2014      CEO 29.27644
2        2014      CEO 29.27644
3        2014      CFO 17.56586
4        2014       CE 17.56586
5        2014      COO 17.56586
6        2014      CEO 46.84231
Run Code Online (Sandbox Code Playgroud)

我正在使用以下语句cuttable数据

  df <- df_in %>%
    filter(Report_Year == input$v_year,
           Position == "CEO") %>%
    select(Target) %>%
    filter(!is.na(Target)) %>%
    mutate(bins = cut(Target, breaks=seq(0, (max(Target)+25), 25))) %>%
    select(bins) %>%
    table %>%
    as.data.frame

>
         . Freq
1   (0,25]    0
2  (25,50]    6
3 …
Run Code Online (Sandbox Code Playgroud)

r shiny

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

r - 为每个组选择最后n次出现

情况

我有一个数据框df:

df <- structure(list(person = structure(c(1L, 1L, 1L, 1L, 2L, 2L, 2L, 
    3L, 3L), .Label = c("pA", "pB", "pC"), class = "factor"), date = structure(c(16071, 
    16102, 16130, 16161, 16071, 16102, 16130, 16071, 16102), class = "Date")), .Names = c("person", 
    "date"), row.names = c(NA, -9L), class = "data.frame")

> df
  person       date
1     pA 2014-01-01
2     pA 2014-02-01
3     pA 2014-03-01
4     pA 2014-04-01
5     pB 2014-01-01
6     pB 2014-02-01
7     pB 2014-03-01
8     pC 2014-01-01
9     pC …
Run Code Online (Sandbox Code Playgroud)

r

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

如何在 MacOS 下导出 SceneKit 场景的内容

将 SceneKit 场景的内容导出到 Collada (.dae) 文件时,我得到了意外的结果。这是我到目前为止所拥有的。

我创建了一个沿 x 轴有 5 个球体的简单场景

var x:CGFloat = 0
for i in 0...4 {
    let sphere = SCNNode(geometry: SCNSphere(radius: 1))
    sphere.name = "sphere\(i+1)"
    sphere.position = SCNVector3(x: x, y: 0, z: 0)
    exportScene.rootNode.addChildNode(sphere)
    x += 2
}
Run Code Online (Sandbox Code Playgroud)

并导出内容

let url = URL(fileURLWithPath: pathName)
exportScene.write(to: url, options: nil, delegate: nil) { totalProgress, error, stop in
    print("Export progress: \(totalProgress * 100.0)%")
}
Run Code Online (Sandbox Code Playgroud)

当我将 .dae 文件加载到 3D 程序 (Cheetah 3D) 中时,我期望沿 x 轴有 5 个相同的球体,但出现以下内容。我在导出到 .obj 文件时遇到了类似的问题。

在此输入图像描述

下面的答案是“请记住,DAE …

macos collada scenekit swift

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

r - 合并并将列表熔化到数据框

情况和数据

我有一个员工数据框df_employees:

df_employees <- structure(list(empNo = c(1001, 1002, 1003)), .Names = "empNo", row.names = c(NA, 
  -3L), class = "data.frame")

> df_employees
  empNo
1  1001
2  1002
3  1003
Run Code Online (Sandbox Code Playgroud)

和一系列技能 l_skills

l_skills <- list(c("skill1", "skill2", "skill3"), c("skill1", "skill2"), 
             "skill1")


> l_skills
[[1]]
[1] "skill1" "skill2" "skill3"

[[2]]
[1] "skill1" "skill2"

[[3]]
[1] "skill1"
Run Code Online (Sandbox Code Playgroud)

如何合并和融合数据以获得结果数据帧 df_result

> df_result
  empNo skills
1  1001 skill1
2  1001 skill2
3  1001 skill3
4  1002 skill1
5  1002 skill2
6  1003 skill1
Run Code Online (Sandbox Code Playgroud)

尝试 …

r

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

r - rmarkdown - 呈现数据帧列表

是否可以将降价文档中的数据框列表呈现为单个表格?

例子

鉴于代码块

```{r listOfDf}

library(knitr)

df <- data.frame(a=rnorm(10),b=rnorm(10),c=c(rep("a",5), rep("b",5)))
l_df <- split(df, df$c)

kable(l_df)

```
Run Code Online (Sandbox Code Playgroud)

这输出

l_df_output

但我想要更接近 R 控制台中给出的内容:

> l_df
$a
           a          b c
1  1.2869909 -0.3117932 a
2  1.4621792  1.2826924 a
3 -0.4274641  0.3335532 a
4  0.7882973 -1.1966702 a
5 -1.2086910  0.1549691 a

$b
            a         b c
6  -0.9460508 1.4679430 b
7   0.6580554 0.5806850 b
8  -0.7103335 2.6036176 b
9  -2.0110167 2.0488055 b
10  0.7691045 0.3652907 b
Run Code Online (Sandbox Code Playgroud)

但这也呈现为表格(因此使用kable()

我试过一个循环*

for(i in 1:length(l_df)){
  kable(l_df[i])
}
Run Code Online (Sandbox Code Playgroud)

但这也不起作用(*但它确实适用于图形)

r r-markdown

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

在Mongolite R库中获取ObjectID

我可以从mongoDB实例成功检索数据,但需要重新使用objectID进行依赖查询。

以下代码似乎可以获取我的整个对象,但不能获取ID。我想念什么?

# Perform a query and retrieve data
mongoOBj <- m$find('{"em": "test@test.com"}')
Run Code Online (Sandbox Code Playgroud)

r mongodb mongolite

4
推荐指数
2
解决办法
1342
查看次数

r - data.table与合并后的键和X [Y]连接的不同行为

考虑data.table小号

library(data.table)   ## v1.9.7 (dev version)
#  rm(list=ls())
dt1 <- data.table(id=c(1,2,3),
                val=c(3,2,1))

dt2 <- data.table(id=c(1,2,3),
                val2=c(100,200,300))
Run Code Online (Sandbox Code Playgroud)

这里没有为表分配任何键

tables()
#     NAME NROW NCOL MB COLS    KEY
#[1,] dt1     3    2  1 id,val     
#[2,] dt2     3    2  1 id,val2    
#Total: 2MB
Run Code Online (Sandbox Code Playgroud)

使用两种不同的data.table连接操作时

dt_merge <- merge(dt1, dt2, by=c("id"))
dt_bracket <- dt1[ dt2, on=c("id")]
Run Code Online (Sandbox Code Playgroud)

我们看到该merge函数已经分配了一个键但是X[Y]没有

#     NAME       NROW NCOL MB COLS        KEY
#[1,] dt_bracket    3    3  1 id,val,val2    
#[2,] dt_merge      3    3  1 id,val,val2 id 
#[3,] …
Run Code Online (Sandbox Code Playgroud)

r data.table

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

使用Shiny Rmarkdown中的操作按钮进行绘图

我很好奇以下原因为何不起作用。尝试使用对动作按钮的反应进行绘图时,它无法在Shiny中显示绘图。

知道我在做什么错吗?我尝试了许多迭代和方法。有什么想法可以让Shiny在反应性环境中调用时可以生成图吗?

---
title: "Will not plot"

output: html_document

runtime: shiny

---


```{r setup, include=FALSE}
 knitr::opts_chunk$set(echo = TRUE)
```

```{r, echo = FALSE}

 inputPanel(
  actionButton("Plot", "Save and Open TRI"),
  numericInput("Size", label = "Size", value = 1000, 1000, 5000, 1000)
              )
# Works:
renderPlot({
plot(runif(1000)
     )})

# Doesn't work:
eventReactive(input$Plot,
{
  renderPlot({
plot(runif(1000)
 )})
}
)

observeEvent(input$Plot,
{
  renderPlot({
    plot(runif(1000)
     )})
}
)

```
Run Code Online (Sandbox Code Playgroud)

r shiny

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

R shinydashboard - 更改valueBox的高度

给出一个 shinydashboard

ui.R

library(shinydashboard)
library(shiny)

dashboardPage(

    dashboardHeader(),
    dashboardSidebar(),
    dashboardBody(
        valueBoxOutput(outputId = "vb")
    )
)
Run Code Online (Sandbox Code Playgroud)

server.R

library(shinydashboard)
library(shiny)

function(input, output, session) {

    output$vb <- renderValueBox({
        valueBox(subtitle = "Hello", 
                         value = "hi", 
                         width = 6,
                         color="blue"
        )
    })
}
Run Code Online (Sandbox Code Playgroud)

是否有可能改变valueBox?的高度?

我尝试过使用tags但无法让它们工作,所以我显然错过了一些东西:

dashboardPage(

    dashboardHeader(),
    dashboardSidebar(
    #   tags$head(tags$style("#vb{height:500px}"))
    ),
    dashboardBody(
        # tags$head(tags$style("#vb{height:500px}")),

        # div(style="height: 500px",
        #       valueBoxOutput(outputId = "vb")
        # )
        valueBoxOutput(outputId = "vb")
    )
)
Run Code Online (Sandbox Code Playgroud)

r shinydashboard

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