我使用它越多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应该这样做的路线?
背景
我正在使用一个闪亮的应用程序cut和table一些数据。
数据集包含在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)
我正在使用以下语句cut和table数据
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) 情况
我有一个数据框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) 将 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 …
情况和数据
我有一个员工数据框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 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)
这输出

但我想要更接近 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)
但这也不起作用(*但它确实适用于图形)
我可以从mongoDB实例成功检索数据,但需要重新使用objectID进行依赖查询。
以下代码似乎可以获取我的整个对象,但不能获取ID。我想念什么?
# Perform a query and retrieve data
mongoOBj <- m$find('{"em": "test@test.com"}')
Run Code Online (Sandbox Code Playgroud) 考虑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) 我很好奇以下原因为何不起作用。尝试使用对动作按钮的反应进行绘图时,它无法在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) 给出一个 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 ×9
data.table ×2
shiny ×2
collada ×1
macos ×1
mongodb ×1
mongolite ×1
r-markdown ×1
scenekit ×1
swift ×1