小编unc*_*ool的帖子

无法删除列 - 使用dplyr选择()

我正在使用dplyr,我有一个分组的data.frame.我试图select在这个grouped_df中删除带有该函数的列,但收到了错误消息

> tbl %>% select(-names)
Error: corrupt 'grouped_df', contains 42 rows, and 965 rows in groups
Run Code Online (Sandbox Code Playgroud)

我的数据如下.

> print(tbl_df(tbl), n = 1000)
Source: local data frame [42 x 15]

                     household                                       names x2003 x2004 x2005 x2006 x2007  x2008  x2009  x2012 last.avail last.avail.year absChange.last annChange.last           translation
                         (chr)                                      (fctr) (int) (int) (int) (int) (int)  (int)  (int)  (int)      (int)           (dbl)          (int)          (dbl)                (fctr)
1               all households                                      bostad 59280 61850 62760 63210 66950  73340  72350  77750      77750            2012          18470    0.030594980          Accomodation
2               all …
Run Code Online (Sandbox Code Playgroud)

r dplyr

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

什么是...级别..意思是ggplot :: stat_density2d

我在构建将fill变量设置为的热图时看到了一些例子..level...

比如在这个例子中:

library(MASS)
ggplot(geyser, aes(x = duration, y = waiting)) + 
    geom_point() + 
    geom_density2d() + 
    stat_density2d(aes(fill = ..level..), geom = "polygon")
Run Code Online (Sandbox Code Playgroud)

我怀疑是否..level..意味着fill设置为相对的层数?还有人可以给我一个很好的例子来解释这些2D密度图,每个轮廓代表什么等等?我在网上搜索过但找不到合适的指南.

r ggplot2

13
推荐指数
2
解决办法
2万
查看次数

dplyr left_join()由rownames提供

我正在使用该dplyrs函数left_join来组合两个data.frames.

现在我想通过使用rownames左侧data​​.frame和右侧data​​.frame中的相应列名来手动连接它们left_join,但是我收到错误:

错误:"dplyr :: left_join中的意外'='(x.tsummary,sto.info,by = c(rownames(x.tsummary)="

我的代码

> dplyr::left_join(x.tsummary, sto.info, by = c(rownames(x.tsummary) = 'Symbol'))
Run Code Online (Sandbox Code Playgroud)

这甚至可能吗?在文档中它说我应该指定列名,但如果我可以加入左数据的rownames那就太棒了.

r dplyr

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

与tidyr聚集:位置必须介于0和n之间

我有一些如下数据:

x.row10 <- setNames(data.frame(letters[1:3],1:3,2:4,3:5,4:6,5:7,6:8,7:9),
                    c("names",2004:2009,2012))
#  names 2004 2005 2006 2007 2008 2009 2012
#1     a    1    2    3    4    5    6    7
#2     b    2    3    4    5    6    7    8
#3     c    3    4    5    6    7    8    9
Run Code Online (Sandbox Code Playgroud)

现在,我可以让他们长着gather()tidyr包通过写

x.row10  %>% gather(Year, Val, -names)
Run Code Online (Sandbox Code Playgroud)

但是当我使用时

x.row10  %>% gather(Year, Val, c(2004:2009,2012))
Run Code Online (Sandbox Code Playgroud)

这是我的直觉选择,我收到错误消息

错误:位置必须介于0和n之间

怎么解决这个问题?

r tidyr

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

dplyr::left_join 为新连接的列生成 NA 值

我有两张桌子希望left_join通过dplyr套餐。问题是它会NA为所有新列(我后面的列)生成值。

\n\n

如下所示,为和的新列left_join生成值。为什么会发生这种情况?如何解决?NAIncep.PriceDayCounter

\n\n

更新:感谢@akrun,使用left_join(Avanza.XML, checkpoint, by = c(\'Firm\' = \'Firm\'))解决了问题并且列已正确连接。

\n\n

但是警告消息是一样的,有人可以解释这种行为吗?为什么在这种情况下必须显式指定join列,或者以其他方式生成NA值?

\n\n
> head(Avanza.XML)\n                      Firm Gain.Month.1 Last.Price Vol.Month.1\n1     Stockwik F\xc3\xb6rvaltning       131.25      0.074   131264420\n2                 Novestra        37.14      7.200      605330\n3       Bactiguard Holding        29.55     14.250     2815572\n4              MSC Group B        20.87      3.070      671855\n5 NeuroVive Pharmaceutical        18.07      9.800     3280944\n6      Shelton Petroleum B        16.21      3.800     2135798\n\n> head(checkpoint)\n                      Firm Gain.Month.1 Last.Price Vol.Month.1 Incep.Price DayCounter\n1     Stockwik F\xc3\xb6rvaltning        87.50       0.06    91270090 …
Run Code Online (Sandbox Code Playgroud)

r dplyr

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

创建 RPackage - UseMethod 找不到函数

我正在尝试创建 R 包的第一次尝试。我有下面的一些功能。

#' @export
overview  <- function(x, ...) {
  UseMethod("overview")
} 

overview.query <- function(return.query, ...) {
Run Code Online (Sandbox Code Playgroud)

现在,当我使用devtools::load_all()(加载所有函数)时,一切正常,并overview.query在我传递class query.

但是重建,并且UseMethod无法再找到该overview.query功能(因此未加载所有功能),我做错了什么?

错误消息:没有适用于 'overview' 的方法应用于类“c('query', 'data.frame')”的对象

我认为只有向用户公开的@export函数才会被'ed,所有其他函数仍然对其他包函数在内部可见。

r

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

为什么我的包函数找不到其他非导出标记函数?

我读过 Hadley Wickham 的大部分好书:http://r-pkgs.had.co.nz/,但我很困惑为什么我的包中的函数找不到我的其他非导出函数。

例如我有

#' @export
#' @import ggmap
#' @import hexbin
map  <- function(return.query, zoom, maptype, histObj) {

  UseMethod("map")

}
#' 
map.querySold  <- function(query, zoom = 11, maptype = "roadmap") {
  My Code
}
Run Code Online (Sandbox Code Playgroud)

在干净的环境中运行它并加载我的包会生成错误:

> map(x) # x is of class querySold
Error in UseMethod("map") : 
  no applicable method for 'map' applied to an object of class "c('querySold', 'data.frame')"
Run Code Online (Sandbox Code Playgroud)

出了什么问题,我该如何解决这个问题?我认为内部函数总是可供包内的所有其他函数使用?直到我加载所有函数后devtools::load_all(".")它才起作用。

r r-package

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

在sysdata.rda中存储多个对象:R-package开发

我只是偶然发现存储内部包数据的可能性/R/sysdata.rda.但是,我不知道应该如何存储多个对象?

我可以存储一个单独的对象,但我希望通过它可以提供更多sysdata.rda.我知道可以通过查看Dichromats软件包来实现,如Hadley R软件包网站http://r-pkgs.had.co.nz/data.html所示.

我试过下面的代码.

> devtools::use_data(data, data, internal = TRUE)
Saving data, data as sysdata.rda to C:\Users\USER\Documents\R\package/R

> devtools::use_data(data2, data2, internal = TRUE)
Error: sysdata.rda already exists in C:/Users/User/Documents/R/package/R. Use overwrite = TRUE to overwrite
In addition: Warning message: Saving duplicates only once: data2 
Run Code Online (Sandbox Code Playgroud)

r devtools

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

为什么我需要调用两次使用invisible()返回的对象才能打印它?

从文档中我读到了invisible() returns a (temporarily) invisible copy of an object。现在,当我使用无形时,我总是需要在实际打印之前调用该对象两次。

我使用data.table并希望我的函数在满足特定条件(即函数过早中止)的情况下返回对象的不可见副本。

我注意到,如果在另一个函数中使用不可见返回的对象,则这种“需要两次/两次调用”的行为也适用,使其使用看起来无法使用。是什么导致了这种行为?难道我做错了什么?如何让函数以不可见的方式返回并在第一次调用时打印?

请参阅下面的示例代码:

example <- function(DT) {

  if (!(1 %in% DT$RSI.verticalBottom) | !(1 %in% DT$RSI.top)) {

    # abort if there is no buy or sell signal
    DT[, `:=`(pos = NA,
              return = NA
              )]

    return(invisible(DT))
  }

> example(sample.data)
> sample.data
> sample.data
           conm   tic   datadate  cshoq   gind year month yearmon fdateq pdateq fyr fyearq fqtr
1: NS GROUP INC NSS.1 2000-01-31     NA 101010 2000     1  2000_1     NA …
Run Code Online (Sandbox Code Playgroud)

r data.table

5
推荐指数
0
解决办法
102
查看次数

在 DT 中为单列渲染下拉列表

我不精通 Javascript,想复制rhandsontable包中可用的下拉功能,但用于DT包。

如何以最有效的方式实现这一目标?

例子


library(DT)

i <- 1:5

datatable(iris[1:20, ],
          editable = T,
          options = list(
                    columnDefs = list(
                                      list(
                                           targets = 5,
                                           render = JS(
                     # can't get my head around what should be in the renderer...
         )
      ))
    ))
Run Code Online (Sandbox Code Playgroud)

目标是让i变量充当允许输入的验证器DT对象中。

任何帮助深表感谢!

r shiny dt

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

标签 统计

r ×10

dplyr ×3

data.table ×1

devtools ×1

dt ×1

ggplot2 ×1

r-package ×1

shiny ×1

tidyr ×1