小编Dan*_*gan的帖子

时间序列面板数据的一般滞后

我有一个类似于此的数据集

User    Date        Value
A       2012-01-01  4
A       2012-01-02  5   
A       2012-01-03  6
A       2012-01-04  7
B       2012-01-01  2
B       2012-01-02  3   
B       2012-01-03  4
B       2012-01-04  5
Run Code Online (Sandbox Code Playgroud)

我想创造一个Value尊重的滞后User.

User    Date        Value   Value.lag
A       2012-01-01  4       NA
A       2012-01-02  5       4
A       2012-01-03  6       5
A       2012-01-04  7       6
B       2012-01-01  2       NA
B       2012-01-02  3       2   
B       2012-01-03  4       3
B       2012-01-04  5       4
Run Code Online (Sandbox Code Playgroud)

我在循环中做得非常低效

df$value.lag1<-NA
levs<-levels(as.factor(df$User))
levs
  for (i in 1:length(levs)) {
    temper<- subset(df,User==as.numeric(levs[i])) …
Run Code Online (Sandbox Code Playgroud)

r time-series lag

11
推荐指数
2
解决办法
8632
查看次数

roxygen2(版本5.0)在函数内部发生#'时错误地创建文档

考虑以下R函数定义,使用roxygen2进行记录(版本> = 5.0)

#' @title Test Bug
#' @author Daniel Egan
#' @param x  
#' @return Nothing
#' @export
#' @examples
#' testFun(x)


testFun <- function(x){

  #' Warning1'
  return(TRUE)
}
Run Code Online (Sandbox Code Playgroud)

当使用devtools :: document()来记录它时,它会产生以下错误:

警告消息:
1:@examples [TestFun.R#8]:大括号或引号不匹配

请注意,"示例"部分中绝对没有不匹配的大括号或引号.是什么造成的?我该如何解决?

r roxygen2

9
推荐指数
1
解决办法
549
查看次数

大合并/内存管理

我试图合并一个大文件和一个较小的文件.我在R中读过 很多关于内存管理的帖子,并且无法找到解决它的非极端(去64位,上传到集群等)的方法.我已经尝试了一些bigmemory包,但未能找到解决方案.在我沮丧地举起双手之前,我以为我会在这里试试.

我正在运行的代码如下所示:

#rm(list=ls())
localtempdir<- "F:/Temp/"
memory.limit(size=4095)
[1] 4095
    memory.size(max=TRUE)
[1] 487.56
gc()
         used (Mb) gc trigger  (Mb) max used  (Mb)
Ncells 170485  4.6     350000   9.4   350000   9.4
Vcells 102975  0.8   52633376 401.6 62529185 477.1

client_daily<-read.csv(paste(localtempdir,"client_daily.csv",sep=""),header=TRUE)
object.size(client_daily)
>130MB

sbp_demos<-read.csv(paste(localtempdir,"sbp_demos",sep=""))
object.size(demos)
>0.16MB
client_daily<-merge(client_daily,sbp_demos,by.x="OBID",by.y="OBID",all.x=TRUE)
Error: cannot allocate vector of size 5.0 MB
Run Code Online (Sandbox Code Playgroud)

我想我在问这有什么巧妙的方法不涉及购买新硬件吗?

  1. 我需要能够merge创建一个更大的对象.
  2. 然后我需要对那个更大的对象进行回归等.

我应该放弃吗?bigmemory应该能够帮助解决这个问题吗?

任何指导都非常感谢.

详细信息:R版本2.13.1(2011-07-08)平台:i386-pc-mingw32/i386(32位)Intel 2 Duo Core @ 2.33GHz,3.48GB RAM

merge memory-management r data.table

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

将包装函数内的可选参数传递给子函数

我有一个包装函数,我需要将可选参数传递给指定的子函数.但是有许多不同的可能子功能我无法预先指定它们.作为参考,子功能存在于环境等...考虑:

funInFun<- function (x, method, ...) {    

  method.out <- function(this.x, FUN, ...) {
    FUN <- match.fun(FUN)
    c <- FUN(this.x, ...)
    return(c)
  }

  d <- method.out(x, method)
  return(d)
}

data<-seq(1,10)
funInFun(data, mean) #  Works

data<-c(NA,seq(1,10))
funInFun(data, mean, na.rm=TRUE) # Should remove the NA

funInFun(c(seq(1,10)), quantile, probs=c(.3, .6))  # Shoudl respect the probs option. 
Run Code Online (Sandbox Code Playgroud)

r function

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

使用循环和命名约定在数据框中创建新的命名变量

关于R最令人沮丧的事情之一是难以使用名称,算法和直觉创建新的数据帧变量.

假设我有一个带有一些变量的数据帧,并希望在循环中基于它们创建新变量.例如,我想创建新变量,它们是现有变量的累积和,并且已命名df$var_cumul

temp<-as.data.frame(cbind(seq(0:10),seq(10:20)))
names(temp)<-c("x","y")
for (i in 1:ncol(temp)) {
  vname<-names(temp)[i]
  assign(paste("temp$",vname,"_cumul",sep=""),cumsum(contrs[,i]))
}
Run Code Online (Sandbox Code Playgroud)

没有我发现的作品.这可能是我定期与R最大的问题之一.

有一种简单直观的方法吗?

for-loop r dataframe

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

R:以P的倍数生成N个权重的所有排列

我需要创建一个函数(在R中):
- 给出N个可能的变量来赋予权重;
- 创建所有可能的权重(总计为100%);
- 受制于权重必须以P的倍数出现的约束(通常为1%)

显然,由于N和P是反向相关的 - 即我不能指定N = 7,并且P = 0.4.但是,我希望能够仅指定整数解,即P = 0.01.

很抱歉,如果这是一个众所周知的问题 - 我不是数学家,我使用我认识的术语进行了搜索,但没有发现任何足够接近的问题.

我发布了我写的代码,但是......它并不令人印象深刻或富有洞察力.

谢谢你的帮助!

combinations r permutation combinatorics

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

将 gt 表并排排列或排列在网格或表格中

我想gt在网格中或并排生成一组表对象。例如,下面的代码使用group_by参数来垂直分隔它们。但如果我希望它们并排分开怎么办?

mtcars2 <-
  mtcars %>% 
  mutate(good_mpg = ifelse(mpg > 20, "Good mileage", "Bad mileage"), 
         car_name = row.names(.)) 

mtcars2 %>% 
  group_by(good_mpg) %>% 
  slice_max(order_by = hp, n=5) %>% 
  arrange(hp) %>% 
  select(car_name, hp) %>% 
  gt() %>% 
  data_color(columns = c("hp"), 
             colors = col_numeric(palette = "Blues", 
                                  domain = c(0, 400)))
Run Code Online (Sandbox Code Playgroud)

带有垂直 group_by 的表

r r-markdown gt

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