我有一个数据框,每一行都有时间事件。在一行中,我有发送者的事件类型(typeid=1),另一行有接收者的事件(typeid=2)。我想计算发送方和接收方之间的延迟(时差)。
我的数据组织在 data.frame 中,如下面的快照所示:
dd[1:10,]
timeid valid typeid
1 18,00035 1,00000 1
2 18,00528 0,00493 2
3 18,02035 2,00000 1
4 18,02116 0,00081 2
5 18,04035 3,00000 1
6 18,04116 0,00081 2
7 18,06035 4,00000 1
8 18,06116 0,00081 2
9 18,08035 5,00000 1
10 18,08116 0,00081 2
calc_DelayVIDEO <- function (dDelay ){
pktProcess <- TRUE
nLost <- 0
myDelay <- data.frame(time=-1, delay=-1, jitter=-1, nLost=-1)
myDelay <- myDelay[-1, ]
tini <- 0
tend <- 0
for (itr in c(1:length(dDelay$timeid))) { …Run Code Online (Sandbox Code Playgroud) 让我在R中添加另一个范围问题,这次是降雪包.如果我在我的全局环境中定义一个函数,并且我稍后在另一个函数中的sfApply()中尝试使用该函数,则不再找到我的第一个函数:
#Runnable code. Don't forget to stop the cluster with sfStop()
require(snowfall)
sfInit(parallel=TRUE,cpus=3)
func1 <- function(x){
y <- x+1
y
}
func2 <- function(x){
y <- sfApply(x,2,function(i) func1(i) )
y
}
y <- matrix(1:10,ncol=2)
func2(y)
sfStop()
Run Code Online (Sandbox Code Playgroud)
这给出了:
> func2(y)
Error in checkForRemoteErrors(val) :
2 nodes produced errors; first error: could not find function "func1"
Run Code Online (Sandbox Code Playgroud)
如果我将我的函数嵌套在另一个函数中,它可以工作.当我在全局环境中使用sfApply()时,它也可以工作.事实是,我不想在函数2中嵌入我的函数func1,因为这会导致func1被定义多次(func2用于循环结构).
我已经尝试过简化代码以摆脱双循环,但由于问题的性质,这是不可能的.有任何想法吗?
我在R中找到执行等频离散化的函数时遇到了麻烦.我偶然发现了'infotheo'软件包,但经过一些测试后发现算法被破坏了.CRAN似乎不再支持"dprep".
编辑:
为清楚起见,我不需要分隔箱之间的值.我真的想要相同的频率,如果一个值最终在两个箱中,则无关紧要.例如:
c(1,3,2,1,2,2)
Run Code Online (Sandbox Code Playgroud)
应该给一个箱子c(1,1,2)和一个c(2,2,3)
我设法写了一个for loop比较以下向量中的字母:
bases <- c("G","C","A","T")
test <- sample(bases, replace=T, 20)
Run Code Online (Sandbox Code Playgroud)
test 将返回
[1] "T" "G" "T" "G" "C" "A" "A" "G" "A" "C" "A" "T" "T" "T" "T" "C" "A" "G" "G" "C"
Run Code Online (Sandbox Code Playgroud)
通过该功能,Comp()我可以检查字母是否与下一个字母匹配
Comp <- function(data)
{
output <- vector()
for(i in 1:(length(data)-1))
{
if(data[i]==data[i+1])
{
output[i] <-1
}
else
{
output[i] <-0
}
}
return(output)
}
Run Code Online (Sandbox Code Playgroud)
导致;
> Comp(test)
[1] 0 0 0 0 0 1 0 0 0 0 0 1 1 1 …Run Code Online (Sandbox Code Playgroud) 我想使用R 2.14中的'ByteCompile'字段.但是,"编写R扩展"仅描述此字段,但未说明应将其设置为什么值.我应该如何使用它?你有例子吗?
它与"LazyData:yes"相同吗?
我还在r-devel邮件列表上提出了这个问题.
我很震惊地发现该节目是S4通用的,而且我找不到使用S3调度来使show函数工作的方法.一个简单的演示:
> x <- 1:5
> xx <- structure(x,class="aClass")
> show.aClass <- function(object){
+ cat("S3 dispatching.\n")
+ print(object)
+ }
> xx
[1] 1 2 3 4 5
Run Code Online (Sandbox Code Playgroud)
没有S3在这里调度......
> setMethod("show","aClass",function(object){
+ cat("S4 dispatching.\n")
+ print(object)
+ })
in method for ‘show’ with signature ‘"aClass"’: no definition for class “aClass”
[1] "show"
> xx
[1] 1 2 3 4 5
Run Code Online (Sandbox Code Playgroud)
你觉得呢?
> print.aClass <- function(object){
+ cat("the print way...\n")
+ print(as.vector(object)) #drop class to avoid infinite loop!
+ }
> …Run Code Online (Sandbox Code Playgroud) 我有一个包含S3和S4方法组合的包(是的,我知道,但尝试为sort()编写一个S4,as.matrix()等等...).所以我坚持使用CRAN的经典roxygen2(版本2.2.2)
我注意到无论我尝试什么,我都无法在Rd文件中获得自动填充的用法标记.我知道我可以使用@usage手工完成,但我想保持自动化,因为我有一个相当广泛的代码库,我不想错过任何地方的标签.
一个例子:
#' A small test function
#'
#' This function tests roxygen2
#' @param x that's right, it's called x
#' @param ... some more stuff
#'
#' @rdname testfun-methods
#' @aliases testfun
#' @docType methods
#' @export
setGeneric("testfun",function(x,...) standardGeneric("testfun"))
#' @rdname testfun-methods
#' @aliases testfun,matrix-method
#' @return the matrix minus 1
setMethod("testfun","matrix",function(x,...){x - 1})
#' @rdname testfun-methods
#' @aliases testfun,numeric-method
#' @return a vector plus 1
setMethod("testfun","matrix",function(x,...){x + 1})
Run Code Online (Sandbox Code Playgroud)
如果我将它包装在一个包中,使用roxygen2(和RStudio,如果这很重要)进行roxygenize,并检查帮助文件,它看起来像这样:
\docType{methods}
\name{testfun}
\alias{testfun}
\alias{testfun,matrix-method}
\alias{testfun,numeric-method}
\title{A small …Run Code Online (Sandbox Code Playgroud) 这是我与R合作的第一周,有一件事我似乎无法管理.
df <- data.frame(a = c(1:10),
b = c("a", "a", "b", "c", "c", "b", "a", "c", "c", "b"))
testF = function(select) {
dum = subset(df, b == select)
}
lapply(unique(df$b), testF)
Run Code Online (Sandbox Code Playgroud)
此功能现在只是在屏幕上打印数据集.但我想将结果存储在我的工作区中作为单独的数据框.在这个例子中,这将给出三个数据帧; a,b和c.
谢谢你的帮助.
我需要运送一个带有图表的包裹,而客户坚持使用其自己的许可字体。这些图表必须呈现为 EPS 并发送给布局人员以获取报告。
我有该字体的 .ttf 文件,其名称如下:
我还有这些文件的 .eot、.svg 和 .woff 版本。
所以我尝试了这个extrafont包:
ttf_import('Path/To/ttfFiles')
fonts()
[1] "FontNameSans-Bold" "FontNameSans-Light"
[3] "FontNameSans-Medium" "FontNameSans-Regular"
[5] "FontNameSerif-Bold" "FontNameSerif-Light"
[7] "FontNameSerif-Medium" "FontNameSerif-Regular"
Run Code Online (Sandbox Code Playgroud)
我本来希望见到两个家庭,但这显然行不通。
最后,ttf 文件应该包含在该inst文件夹的子文件夹中,我应该有类似的内容:
.onLoad({
font_import(file.path(system.file(package = 'mypackage'),
"fontdir")
)
# something else to create a family FontName for
# use with postscript() or cairo_ps()
loadfonts()
})
Run Code Online (Sandbox Code Playgroud)
所以我可以稍后做:
setEPS()
postscript('somefile.eps', family = 'FontName Sans')
plot(mydata)
dev.off()
embed_fonts('somefile.eps', outfile = 'somefile-embedded.eps')
Run Code Online (Sandbox Code Playgroud)
问题:我需要采取哪些额外步骤才能让这些家庭像其他家庭一样提供服务?
编辑:我知道我必须先加载字体才能使用它们。但如果注册错误,我将无法加载家庭。问题是如何正确注册字体系列,以便其余部分正常工作。
我的 R Shiny 应用程序中有一系列输入,我将它们用作函数的参数,以从数据框中选择特定数据。输入是 dateInput:
dateInput("dateSelect", "Date", format = "yyyy-mm-dd", value = NA)
在我的函数中,我需要指定 dateSelect 是空白还是未选中,以便能够选择所有日期。查看一个正常工作的示例,它不是日期,还有一个简单的 selectInput:
selectInput("teamSelect", "Team", choices = c("All", levels(newEffortstable$team)))
在函数中,这适用于选择“所有团队”:
if(!missing(teamSelect)){
if(teamSelect!="All"){
selections[["teamEfforts"]] =
newEffortstable$effortNo[which(newEffortstable$team %in% teamSelect)]
}else{
selections[["teamEfforts"]] = newEffortstable$effortNo
}
}
Run Code Online (Sandbox Code Playgroud)
我已经尝试了以下NA和NULL和" "并不断收到“如果错误:参数长度为零”
if(!missing(dateSelect)){
if(!dateSelect== "NA"){
selections[["dateEfforts"]] =
newEffortstable$effortNo[which(newEffortstable$date == dateSelect)]
}else{
selections[["dateEfforts"]] = newEffortstable$effortNo
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢!