我正在准备三个R包,很快就会上传到相互依赖的CRAN.具体来说,软件包A
已经在CRAN上并且要更新,软件包B
是独立的,软件包C
依赖于最新版本的A
和B
.
我可以在没有检查问题的情况下通过首先上传A
并在几天后C
上传来完成B
此操作.但是,我想立即在帮助页面中添加交叉引用,并将所有包添加到彼此的建议列表中.此外,由于我将进一步开发这三个,我希望将来能够同时更新它们.
那么,这里的问题是,是否可以同时向CRAN上传多个相互依赖的包?我怎么能这样做?
我想完成两件事.首先,如果我有一个向量,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)
但必须有一个更简单的方法.我试图用Vectorize
的seq
,但是这给了我一个错误:
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) 我不了解如何在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) 假设我有一个三维数组:
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)
哪个更快,但是为多个切片手动执行会变得非常繁琐.是否有一个函数可以执行上面的表达式而无需手动指定每个切片?
我有一个带名字的向量,例如:
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) 假设我有一个 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)
但我想在这个页面内完成绘图,以便绘图区域(不是边距)完全填充这个框,并且图例、轴标签等在绘图之外“溢出”。有没有办法做到这一点?
我正在寻找一种简单的方法来用普通字母替换所有标点符号.例如,我想föó
改为foo
.我可以这样做:
gsub("ö|ó","o","föó")
Run Code Online (Sandbox Code Playgroud)
但是,对于每一个可能的标点字母来说,这可能需要大量的手工工作.有没有办法自动执行此操作?
我正在尝试使用闪亮创建一个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
我没有安装包(或我尝试使用这种方式的任何其他包)的错误.我怎么能在闪亮的服务器中使用额外的包?
假设我有一个观察列表:
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) 在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)