小编Sac*_*amp的帖子

将多个相互依赖的包上载到CRAN

我正在准备三个R包,很快就会上传到相互依赖的CRAN.具体来说,软件包A已经在CRAN上并且要更新,软件包B是独立的,软件包C依赖于最新版本的AB.

我可以在没有检查问题的情况下通过首先上传A并在几天后C上传来完成B此操作.但是,我想立即在帮助页面中添加交叉引用,并将所有包添加到彼此的建议列表中.此外,由于我将进一步开发这三个,我希望将来能够同时更新它们.

那么,这里的问题是,是否可以同时向CRAN上传多个相互依赖的包?我怎么能这样做?

r package cran

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

在R中向量化rep和seq

我想完成两件事.首先,如果我有一个向量,1:5我想得到一个矩阵(或两个向量),表示这些元素的唯一组合,包括两倍相同的数字,但不包括重复.

现在我可以使用矩阵来做到这一点:

foo <- matrix(1:5,5,5)
cbind(foo[upper.tri(foo,diag=TRUE)],foo[lower.tri(foo,diag=TRUE)])
      [,1] [,2]
 [1,]    1    1
 [2,]    1    2
 [3,]    2    3
 [4,]    1    4
 [5,]    2    5
 [6,]    3    2
 [7,]    1    3
 [8,]    2    4
 [9,]    3    5
[10,]    4    3
[11,]    1    4
[12,]    2    5
[13,]    3    4
[14,]    4    5
[15,]    5    5
Run Code Online (Sandbox Code Playgroud)

但必须有一个更简单的方法.我试图用Vectorizeseq,但是这给了我一个错误:

cbind(Vectorize(seq,"from")(1:5,5),Vectorize(seq,"to")(5,1:5))
    Error in Vectorize(seq, "from") : 
      must specify formal argument names to vectorize
Run Code Online (Sandbox Code Playgroud)

我要做的第二件事是如果我有一个包含向量的列表bar,以获得一个包含重复列表元素的向量,该向量等于该元素中元素的数量.我可以这样做:

unlist(apply(rbind(1:length(bar),sapply(bar,length)),2,function(x)rep(x[1],x[2])))
 [1] 1 1 …
Run Code Online (Sandbox Code Playgroud)

r vectorization seq

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

创建新的滞后data.frame列

我不了解如何在data.frame中创建一个新的"滞后"列.我的当前数据是在数据末尾收集的.我需要发送一个程序来假设它是在早上收集的第一件事,所以我需要将第2列滞后1行.我写的代码只返回相同的数据.

我该怎么做呢?

谢谢.

D8 = structure(list(Date = structure(c(14396, 14397, 14398, 14399, 
14400, 14403, 14404, 14405, 14406,
14407, 14410, 14411, 14412,  14413,
14414, 14417, 14418, 14419, 14420,
14421, 14424, 14425,  14426, 14427,
14428, 14431, 14432, 14433, 14434,
14435), class = "Date"), 
    PL8 = c(0, 0, 0, 0, 76, 0, -334, -974, -104, 356, 378, -1102, 
    -434, 266, -434, 444, 464, 0, 486, 406, -224, -214, 0, -4, 
    0, -188, 356, 322, -484, 436)), .Names = c("Date", "PL8"), row.names =
c(NA,  30L), …
Run Code Online (Sandbox Code Playgroud)

r

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

矢量化总和在阵列的切片

假设我有一个三维数组:

set.seed(1)
foo <- array(rnorm(250),dim=c(5,10,5))
Run Code Online (Sandbox Code Playgroud)

我想在第4,5和6列上创建每行和每层的矩阵.我可以这样写:

apply(foo[,4:6,],c(1,3),sum)
Run Code Online (Sandbox Code Playgroud)

但是这会按行和每层分割数组,因为它没有矢量化,所以非常慢.我也可以添加切片:

foo[,4,]+foo[,5,]+foo[,6,]
Run Code Online (Sandbox Code Playgroud)

哪个更快,但是为多个切片手动执行会变得非常繁琐.是否有一个函数可以执行上面的表达式而无需手动指定每个切片?

arrays r

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

在特定单词后面的逗号上拆分字符串

我有一个带名字的向量,例如:

names <- "Jansen, A., Karel, A., Jong, A. de, Pietersen, K."
Run Code Online (Sandbox Code Playgroud)

我希望按名称拆分.在这种情况下,我需要将矢量分开.,并跟随逗号de(该名称将是A. De Jong荷兰语中的典型名称).

现在我做:

 strsplit(names,split="\\.\\,|\\<de\\>,")
Run Code Online (Sandbox Code Playgroud)

但这也de从名称中删除了:

[[1]]
[1] "Jansen, A"      " Karel, A"      " Jong, A. "     " Pietersen, K."
Run Code Online (Sandbox Code Playgroud)

如何获得以下结果?

[[1]]
[1] "Jansen, A"      " Karel, A"      " Jong, A. de"     " Pietersen, K."
Run Code Online (Sandbox Code Playgroud)

regex r

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

使 ggplot 完全适合视口大小

假设我有一个 ggplot 对象:

library("ggplot2")
library("grid")
p <- qplot(0:10,0:10)
Run Code Online (Sandbox Code Playgroud)

还有一些带框的网格页面:

grid.newpage()
vp <- viewport(width = unit(210, "mm"), height = unit(297, "mm"))
pushViewport(vp)

# Inner box:
box <- viewport(unit(105,"mm"),unit(150,"mm"),width=unit(150,"mm"),height=unit(150,"mm"))
pushViewport(box)
grid.rect()
Run Code Online (Sandbox Code Playgroud)

我可以按如下方式拟合情节:

# Print ggplot plot:
upViewport()
print(p ,vp = box)
Run Code Online (Sandbox Code Playgroud)

但我想在这个页面内完成绘图,以便绘图区域(不是边距)完全填充这个框,并且图例、轴标签等在绘图之外“溢出”。有没有办法做到这一点?

r ggplot2 r-grid

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

R:用普通字母替换所有带有间断的字母

我正在寻找一种简单的方法来用普通字母替换所有标点符号.例如,我想föó改为foo.我可以这样做:

gsub("ö|ó","o","föó")
Run Code Online (Sandbox Code Playgroud)

但是,对于每一个可能的标点字母来说,这可能需要大量的手工工作.有没有办法自动执行此操作?

r

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

闪亮服务器中缺少软件包

我正在尝试使用闪亮创建一个Web应用程序.它需要我加载我在计算机上安装的软件包.例如:

## Contents ui.R:
library(shiny)
library(plyr)

shinyUI(pageWithSidebar(

  headerPanel("Hello Shiny!"),

  sidebarPanel(
    sliderInput("obs", 
                "Number of observations:", 
                min = 0, 
                max = 1000, 
                value = 500)
  ),

  mainPanel(
    plotOutput("distPlot")
  )
))

## Contents server.R:
library(shiny)
library(plyr)

shinyServer(function(input, output) {

  output$distPlot <- renderPlot({

    # generate an rnorm distribution and plot it
    dist <- rnorm(input$obs)
    hist(dist)
  })
})
Run Code Online (Sandbox Code Playgroud)

如果我在本地运行它(使用runApp),但是当我尝试通过我的服务器(同一台计算机)运行它时,我得到的错误是plyr我没有安装包(或我尝试使用这种方式的任何其他包)的错误.我怎么能在闪亮的服务器中使用额外的包?

r shiny shiny-server

3
推荐指数
2
解决办法
8840
查看次数

列表中的表的数据框

假设我有一个观察列表:

foo <- list(c("C", "E", "A", "F"), c("B", "D", "B", "A", "C"), c("B", 
"C", "C", "F", "A", "F"), c("D", "A", "A", "D", "D", "F", "B"
))

> foo
[[1]]
[1] "C" "E" "A" "F"

[[2]]
[1] "B" "D" "B" "A" "C"

[[3]]
[1] "B" "C" "C" "F" "A" "F"

[[4]]
[1] "D" "A" "A" "D" "D" "F" "B"
Run Code Online (Sandbox Code Playgroud)

并且每个独特元素都有一个向量:

vec <- LETTERS[1:6]

> vec
[1] "A" "B" "C" "D" "E" "F"
Run Code Online (Sandbox Code Playgroud)

我想获得一个数据框,其中包含每个元素vec中每个元素的计数foo.我可以用plyr一种非常丑陋的未经实现的方式来做到这一点:

> ldply(foo,function(x)sapply(vec,function(y)sum(y==x))) …
Run Code Online (Sandbox Code Playgroud)

r

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

R igraph add.edges()带有属性

在add.edges()期间分配一个属性,如width:

g <- add.edges(g,c(from,to), attr= width <- 1 ) 

Error message:
please supply names for attributes
Run Code Online (Sandbox Code Playgroud)

r edges igraph attr

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

标签 统计

r ×10

arrays ×1

attr ×1

cran ×1

edges ×1

ggplot2 ×1

igraph ×1

package ×1

r-grid ×1

regex ×1

seq ×1

shiny ×1

shiny-server ×1

vectorization ×1