小编Cla*_*ist的帖子

将命名不一致的列表转换为具有可变深度的数据框

考虑以下列表:

x <- list("a" = list("b", "c"),
          "d" = list("e", "f" = list("g", "h")),
          "i" = list("j", "k" = list("l" = list("m", "n" = list("o", "p")))))
Run Code Online (Sandbox Code Playgroud)

值得一提的是:

  • 并非所有名称和元素都属于一个字符
  • 存在未确定的先验嵌套级别。

鉴于x,我的目标是输出数据框:

y <- data.frame(
  main_level = c(rep("a", 2), rep("d", 3), rep("i", 4)),
  level1 = c("b", "c", "e", rep("f", 2), "j", rep("k", 3)),
  level2 = c(NA, NA, NA, "g", "h", NA, "l", "l", "l"),
  level3 = c(NA, NA, NA,  NA,  NA, NA, "m", "n", "n"), 
  level4 = c(NA, NA, …
Run Code Online (Sandbox Code Playgroud)

r list dataframe

12
推荐指数
2
解决办法
522
查看次数

在不使用循环的情况下查找高于值且小于df列中的值的值的数量

考虑以下:

df <- data.frame(X = c(5000, 6000, 5500, 5000, 5300))

count_above <- function(vector)
{
  counts <- vector()
  counts[1] <- 0
  for (i in 2:length(vector))
  {
    temp <- vector[1:i]
    counts <- c(counts, sum(temp < vector[i]))
  }
  return(counts)
}
Run Code Online (Sandbox Code Playgroud)

这给了我正确的输出:

count_above(df$X)
[1] 0 1 1 0 2
Run Code Online (Sandbox Code Playgroud)

例如,这里的(列)向量是

5000
6000
5500
5000
5300
Run Code Online (Sandbox Code Playgroud)

在最顶层5000,它上面没有任何值.所以这给了价值0.

6000,有一个值高于它并且小于6000:5000.所以这给了价值1.

5500,它上面有两个值,其中一个小于5500,所以这给出了值1,依此类推.

有没有办法在不使用循环的情况下写出来?

r

8
推荐指数
2
解决办法
1544
查看次数

在向量的每个元素周围加上引号,并用逗号分隔

考虑以下:

> n <- 1:4
> n
[1] 1 2 3 4
Run Code Online (Sandbox Code Playgroud)

我想转换,n以便我得到一个字符串'1', '2', '3', '4'(其中R,将显示为"'1', '2', '3', '4'").

当我使用sqlQuery()变量字符串时,通常会出现这种情况.遗憾的是,我对RegEx不够熟悉,无法轻松执行此操作.

我最接近的是

> paste0(n, collapse = "", sep = ",")
[1] "1,2,3,4,"
Run Code Online (Sandbox Code Playgroud)

它不会在每个数字周围加上单引号,并且最后会有额外的逗号.

r

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

返回给定维度的所有矩阵,其中包含一定数量的 1 和剩余的 0

考虑以下简化示例,其中所有可能的 2 x 2 矩阵均包含一个 1 和其余 0。

library(arrangements)

# define function
generate_matrices <- function(nrow, ncol, ones_count) {
  
  vectors <- permutations(c(
    rep(1, ones_count),
    rep(0, nrow * ncol - ones_count)
  ))
  
  # remove redundancies
  vectors <- vectors[!duplicated(vectors),]
  
  # list of matrices
  out <- list()
  
  for (i in 1:ncol(vectors)) {
    out[[i]] <- matrix(
      data = vectors[,i],
      nrow = nrow,
      ncol = ncol,
      byrow = TRUE
    )
  }
  return(out)
}
Run Code Online (Sandbox Code Playgroud)

运行函数生成所有带有一个 1 的 2 x 2 矩阵:

generate_matrices(nrow = 2, ncol = 2, …
Run Code Online (Sandbox Code Playgroud)

r permutation matrix

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

使用stat_function和ggplot为区域着色

这是我现在的代码:

library(ggplot2)

normal <- function(mu, sigma, x){
1/(sigma*sqrt(2*pi))*exp(-((x-mu)/sigma)^2)
}

normal_expr <- function(){
  expression(N~bgroup('(',paste(x, '; ',mu, ',', sigma),')') == frac(1, sigma~sqrt(2*pi)) ~ 
                    exp~bgroup('[',-~bgroup('(',frac(x-mu,sigma),')')^2,']'))

}


ggplot(data.frame(x=c(-3,3)), aes(x=x, color=g)) + 
  stat_function(data=data.frame(x=c(-2, 3.5), g=factor(1)), fun=normal, geom='line', 
                args=list(mu=0.5, sigma=2)) +   
  stat_function(data=data.frame(x=c(-2, 3.5), g=factor(2)), fun=normal, geom='line', 
                args=list(mu=1, sigma=2))  + 
  scale_x_continuous(breaks=seq(from=-2, to = 3, by=1)) +
  ylab(normal_expr()) + 
  coord_cartesian(ylim=c(0, 0.2)) +
  scale_color_manual('',values=c('blue','red', 'red'), 
  labels=c(expression(N(mu == 0.5, sigma==2)),expression(N(mu == 1, sigma==2)))) +
  theme(panel.background = element_rect(fill='white'),
        #panel.background has a gray-like color by default
        panel.border=element_rect(fill=NA), 
        #panel.border puts in fill by …
Run Code Online (Sandbox Code Playgroud)

r ggplot2

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

ShinyTree:如果选中复选框,则将变量设置为值

后续shinyTree:视图,而不选择

library(shiny)
library(shinyTree)
server <- shinyServer(function(input, output, session) {  
  output$tree <- renderTree({ 
    sss=list(  'I lorem impsum'= list( 
      'I.1 lorem impsum'   =  structure(list('I.1.1 lorem impsum'='1', 'I.1.2 lorem impsum'='2'),stopened=TRUE),  
      'I.2 lorem impsum'   =  structure(list('I.2.1 lorem impsum'='3'), stopened=TRUE)))
    attr(sss[[1]],"stopened")=TRUE 
    sss
  })
})
ui <- shinyUI(
  shiny::fluidPage(
    h4('Shiny hierarchical checkbox')
    ,shinyTree("tree", checkbox = TRUE)
  )
)
shinyApp(ui, server)
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

我想设置一个变量,如果 I.1.2。lorem impsum 被选中,它的值为4,例如。

我所知道的是我必须使用reactive(). 正如你在这里看到的,我已经学会了如何用checkboxGroupInputs来做到这一点,但我不清楚这是否可以在shinyTree. 我在网上找不到这方面的文档。

如何才能做到这一点?

我也看过这里的功能但不知道如何使用它们。

r shiny shinytree

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

给定年份和月份的月份函数的最后一天

多次单步执行代码后,我无法找到具体导致此错误的原因。我希望有人以前见过这个错误。

以下是我认为与该问题相关的内容:

#### Load packages
library(lubridate)

MONTH <- 1
YEAR <- 2018

# Last day of month
last_day_of_mth <- function(YEAR, MONTH){
  MONTH_BEGIN <- as.POSIXlt(paste0(YEAR, "-", MONTH, "-1"))
  MONTH_END <- MONTH_BEGIN
  day(MONTH_END) <- day(MONTH_BEGIN)
  month(MONTH_END) <- month(MONTH_END) + 1
  day(MONTH_END) <- day(MONTH_END) - 1
  return(as.character(MONTH_END))
}
Run Code Online (Sandbox Code Playgroud)

此代码加载一堆外部文件,其中source()不包含任何其他包或其他函数。他们只是从 Google Analytics API 查询数据,或者加载 .csv 文件、操作数据帧,并以 .csv 文件形式输出适当的输出。

由于某些奇怪的原因,通过运行这 10 个文件后source(),它吐出

> last_day_of_mth(2018, 1)
[1] "2018-03-02 06:00:00"
Run Code Online (Sandbox Code Playgroud)

这显然是不正确的——它应该是2018-01-31

r

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

将带有方括号和圆括号的字符串转换为嵌套列表

考虑以下字符串:

x = "a (b, c), d [e, f (g, h)], i (j, k (l (m, n [o, p])))"
Run Code Online (Sandbox Code Playgroud)

我的目标是获取该字符串并将其转换为以下列表:

list("a" = list("b", "c"),
     "d" = list("e", "f" = list("g", "h")),
     "i" = list("j", "k" = list("l" = list("m", "n" = list("o", "p")))))

$a
$a[[1]]
[1] "b"

$a[[2]]
[1] "c"


$d
$d[[1]]
[1] "e"

$d$f
$d$f[[1]]
[1] "g"

$d$f[[2]]
[1] "h"



$i
$i[[1]]
[1] "j"

$i$k
$i$k$l
$i$k$l[[1]]
[1] "m"

$i$k$l$n
$i$k$l$n[[1]]
[1] "o"

$i$k$l$n[[2]]
[1] "p"
Run Code Online (Sandbox Code Playgroud)

第一个问题是尝试分离每个组件:

x = …
Run Code Online (Sandbox Code Playgroud)

r

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

shinyTree:不选择即可查看

考虑以下:

library(shiny)
library(shinyTree)
server <- shinyServer(function(input, output, session) {  
  output$tree <- renderTree({ 
    list(  'I lorem impsum'= list( 
      'I.1 lorem impsum'   =  structure(list('I.1.1 lorem impsum'='1', 'I.1.2 lorem impsum'='2'),stselected=TRUE),  
      'I.2 lorem impsum'   =  structure(list('I.2.1 lorem impsum'='3'), stselected=TRUE))) 
  })
})
ui <- shinyUI(
  shiny::fluidPage(
    h4('Shiny hierarchical checkbox')
    ,shinyTree("tree", checkbox = TRUE)
  )
)
shinyApp(ui, server)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我怎样才能做到这一点,以便默认情况下不选择上述任何一项,但仍然显示

stselected = FALSE如果我在上面的代码中设置两者,我得到

在此输入图像描述

不是我想要的;我只想取消选中上面的复选框。

有关带有代码的更多文档的在线参考链接将非常有帮助。的包文档shinyTree没有帮助。

r shiny shinytree

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

在stats :: glm()中,为什么子集参数会给我自己的数据参数子集提供不同的结果?

请考虑以下代码:

library(ISLR)

row_list <- structure(list(`1` = 1:40, `2` = 41:79, `3` = 80:118, `4` = 119:157, 
               `5` = 158:196, `6` = 197:235, `7` = 236:274, `8` = 275:313, 
               `9` = 314:352, `10` = 353:392), 
          .Names = c("1", "2", "3", "4", "5", "6", "7", "8", "9", "10"))
test <- row_list[[1]]
train <- setdiff(unlist(row_list), row_list[[1]])
Run Code Online (Sandbox Code Playgroud)

输出1:

> glm(mpg ~ poly(horsepower, 1), data = Auto, subset = train)

Call:  glm(formula = mpg ~ poly(horsepower, 1), data = Auto, subset = train)

Coefficients:
        (Intercept) …
Run Code Online (Sandbox Code Playgroud)

r

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

标签 统计

r ×10

shiny ×2

shinytree ×2

dataframe ×1

ggplot2 ×1

list ×1

matrix ×1

permutation ×1