我正在使用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) 我在构建将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密度图,每个轮廓代表什么等等?我在网上搜索过但找不到合适的指南.
我正在使用该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那就太棒了.
我有一些如下数据:
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之间
怎么解决这个问题?
我有两张桌子希望left_join通过dplyr套餐。问题是它会NA为所有新列(我后面的列)生成值。
如下所示,为和的新列left_join生成值。为什么会发生这种情况?如何解决?NAIncep.PriceDayCounter
更新:感谢@akrun,使用left_join(Avanza.XML, checkpoint, by = c(\'Firm\' = \'Firm\'))解决了问题并且列已正确连接。
但是警告消息是一样的,有人可以解释这种行为吗?为什么在这种情况下必须显式指定join列,或者以其他方式生成NA值?
> 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 包的第一次尝试。我有下面的一些功能。
#' @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,所有其他函数仍然对其他包函数在内部可见。
我读过 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/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) 从文档中我读到了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) 我不精通 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对象中。
任何帮助深表感谢!