我正在开发一个原始的闪亮应用程序,该应用程序将映射来自“ 苏格兰的开放数据”项目的一些数据。我计算出了SPARQL查询,该查询生成的数据帧类似于下面提供的摘录
dz_label overall.quantiles
S010001 8
S010002 9
Run Code Online (Sandbox Code Playgroud)
我拥有强化的shapefile,并尝试使用以下代码映射它们:
ggplot() +
geom_map(data = dta.simd, aes(map_id = dz_label,
fill = as.factor(dta.simd$overall.quantiles)),
map = shps.dzs2001) +
geom_path(data = shps.dzs2001, aes(x=long, y=lat, group=group),
colour="black", size=0.25)
Run Code Online (Sandbox Code Playgroud)
代码返回错误
Error: 'x' and 'units' must have length > 0
Run Code Online (Sandbox Code Playgroud)
如果我理解类似的讨论(1,2),问题与值的类相关联。但是,我的理解是as.factor()应该解决这个问题,但是显然不是这样。该应用程序的完整代码包含在下面。当然,我将不胜感激。
服务器
# Libs
require(shiny); require(SPARQL); require(ggplot2); require(rgeos); require(maptools);
require(RCurl)
# Server function
shinyServer(function(input, output) {
# Source the data
## Source the SPARQL data
### Define endpoint URL. …Run Code Online (Sandbox Code Playgroud) 使用VennDiagram包,我通过以下方式生成两个图形:
# First graph
VennDiagram::draw.pairwise.venn(
area1 = 100,
area2 = 70,
cross.area = 30,
category = c("A1", "B1"),
fill = c("#00204DFF", "#FFEA46FF")
) -> vg1
# Second graph
VennDiagram::draw.pairwise.venn(
area1 = 120,
area2 = 80,
cross.area = 10,
category = c("A2", "B2"),
fill = c("#000004FF", "#FCFFA4FF")
) -> vg2
Run Code Online (Sandbox Code Playgroud)
通过调用时grid::grid.draw(vg1),grid::grid.draw(vg2)图表按预期显示:
我如何创建一个将两个图都放在另一个图下的网格对象?
grdFrme <- grid::grid.frame(name = "gf")
grid::grid.pack("gf", vg1)
Run Code Online (Sandbox Code Playgroud)
packGrob(grid.get(gPath),grob,side,row,row.before,row.after中的错误:无效的'grob'
我在R中编写简单的代码,我正在检查工作目录中是否存在给定文件,如果不存在,我将使用数据下载zip文件并在R中解压缩.如果文件存在,则对应于二进制(getBinaryURL)的R对象和与文件的连接已连接.我想在成功下载后删除它们.我起草了一句if语句,但它们返回错误存在错误(bin):第一个参数无效.对我来说中间显而易见的是语法有什么问题.
if (exists(bin)) rm(bin)
if (exists(con)) rm(con)
if (exists(dataurl)) rm(dataurl)
Run Code Online (Sandbox Code Playgroud) 我想,以输出转换从getSymbols在quantmod包到一个数据帧.目前,我使用以下代码实现了这一点.
Data <- new.env()
getSymbols(Symbols = "EUR/USD", src = "oanda", from = "2005-01-01",
to = "2006-01-01", env = Data)
test <- as.data.frame(Data$EURUSD)
head(test)
Run Code Online (Sandbox Code Playgroud)
理想情况下,我想将这些代码简化为以下内容:
test <- as.data.frame(getSymbols(Symbols = "EUR/USD",
src = "oanda", from = "2005-01-01", to = "2006-01-01"))
Run Code Online (Sandbox Code Playgroud)
但这并不适用:
> head(test)
getSymbols(Symbols = "EUR/USD", src = "oanda", from = "2005-01-01", to = "2006-01-01")
1 EURUSD
Run Code Online (Sandbox Code Playgroud)
理想情况下,我希望EUR/USD在处理数据时避免引用该对,因为将来我将努力使这个组件动态,因此必须输入test <- as.data.frame(Data$EURUSD)破坏乐趣.我理想的代码就是这样的:
test <- as.data.frame(getSymbols(Symbols = *user input*,
src = "oanda", from = "2005-01-01", to = …Run Code Online (Sandbox Code Playgroud) 假设我想编写一个简单的重命名函数,它可以通过.Rprofile. 该函数很简单,可以比较为:
carsNewName <- mtcars; rm(mtcars)
Run Code Online (Sandbox Code Playgroud)
.Rprofile可用的函数.Rprofile格式为:
.env$rename <- function(oldName, newName) {
newName <- oldName
rm(oldName, envir = parent.env())
return(newName)
}
Run Code Online (Sandbox Code Playgroud)
在哪里。env通过attach(.env).
如何通过 访问函数的父环境parent.env()?即,如果rename在另一个函数内部调用函数,我想重命名不在全局环境中的对象。
函数作为参数传递给函数。问题涉及:
::和:::呼唤函数在 x 上fun_tst执行函数FUN:
fun_tst <- function(x = 1:100, FUN = mean) {
return(FUN(x))
}
Run Code Online (Sandbox Code Playgroud)
meanfun_tst()
# [1] 50.5
Run Code Online (Sandbox Code Playgroud)
sumfun_tst(x = 1:1e3, FUN = sum)
# [1] 500500
Run Code Online (Sandbox Code Playgroud)
fun_tst <- function(x = 1:100, FUN = mean) {
msg <- paste("Executing function", FUN)
print(msg)
return(FUN(x))
}
fun_tst(x = 1:1e3, FUN = sum)
Run Code Online (Sandbox Code Playgroud)
粘贴错误(“执行函数”,FUN):无法将“内置”类型强制为“字符”类型的向量
有趣的是,print可以处理FUN对象但结果返回函数体。
fun_tst <- function(x = 1:100, …Run Code Online (Sandbox Code Playgroud) 在模块化1 Shiny 应用程序中,我想仅在单击Shinydashboard上的菜单项时加载模块。如果未访问菜单项,我不想加载模块。
app.R# Libs
library(shiny)
library(shinydashboard)
# Source module
source("sample_module.R")
ui <- dashboardPage(
dashboardHeader(title = "Dynamic sidebar"),
dashboardSidebar(sidebarMenuOutput("menu")),
dashboardBody(tabItems(
tabItem(tabName = "tab_one", h1("Tab One")),
tabItem(tabName = "tab_two", sampleModuleUI("sampleModule"))
))
)
server <- function(input, output) {
callModule(sampleModuleServer, "sampleModule")
output$menu <- renderMenu({
sidebarMenu(
menuItem(
"Menu item 1",
icon = icon("calendar"),
tabName = "tab_one"
),
menuItem(
"Menu item 2",
icon = icon("globe"),
tabName = "tab_two"
)
)
})
}
shinyApp(ui, server)
Run Code Online (Sandbox Code Playgroud)
sample_module.RsampleModuleServer <- function(input, output, …Run Code Online (Sandbox Code Playgroud) 为了分析物种数据库,我经常需要更改许多标准,具体取决于项目范围等。
由于总是更改主脚本本身内的标准非常不方便,因此我开始将各种参数定义为文件中的变量,这些参数exterior parameters.R将被复制到项目特定的文件夹并在那里进行调整,并且这些参数将从文件中获取main.R。
这很好用,但是现在我开始过滤表达式,我找不到将它们作为字符串存储在参数文件中的方法。
标准过滤器表达式将是这样的:
rlb == "1" | rlb == "2" | rlb== "3" | rlb == "G" | rlb == "R" | rld ==
"1" | rld == "2" | rld== "3" | rld == "G" | rld == "R" | ffh2 > 1 | ffh4
== 1 | ffh5 == 1 | spa1 == 1 | sap == 1
Run Code Online (Sandbox Code Playgroud)
由于""某些参数,我无法将其分配为字符串变量,因为 R 抱怨存在未知的标记或对象。
如何将此过滤表达式分配给变量,以便稍后可以使用它(例如与eval(my_filter_variable)etc 一起使用)来执行过滤?
我正在使用下面的代码生成一个简单的汇总表:
# Data
data("mtcars")
# Lib
require(dplyr)
# Summary
mt_sum <- mtcars %>%
group_by(am) %>%
summarise_each(funs(min, mean, median, max), mpg, cyl) %>%
mutate(am = as.character(am)) %>%
left_join(y = as.data.frame(table(mtcars$am),
stringsAsFactors = FALSE),
by = c("am" = "Var1"))
Run Code Online (Sandbox Code Playgroud)
代码产生了预期的结果:
> head(mt_sum)
Source: local data frame [2 x 10]
am mpg_min cyl_min mpg_mean cyl_mean mpg_median cyl_median mpg_max cyl_max Freq
(chr) (dbl) (dbl) (dbl) (dbl) (dbl) (dbl) (dbl) (dbl) (int)
1 0 10.4 4 17.14737 6.947368 17.3 8 24.4 8 19
2 1 …Run Code Online (Sandbox Code Playgroud) 我有一个如下所示的数据框:
transid<-c(1,2,3,4,5,6,7,8)
accountid<-c(a,a,b,a,b,b,a,b)
month<-c(1,1,1,2,2,3,3,3)
amount<-c(10,20,30,40,50,60,70,80)
transactions<-data.frame(transid,accountid,month,amount)
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用 dplyr 包动词为每个 accountid 编写每月总金额的函数。
my_sum<-function(df,col1,col2,col3){
df %>% group_by_(col1,col2) %>%summarise_(total_sum = sum(col3))
}
my_sum(transactions, "accountid","month","amount")
Run Code Online (Sandbox Code Playgroud)
得到如下结果:
accountid month total_sum
a 1 30
a 2 40
a 3 70
b 1 30
b 2 50
b 3 140
Run Code Online (Sandbox Code Playgroud)
我收到如下错误:- sum(col3) 中的错误:参数的“类型”(字符)无效。如何在汇总函数中将列名作为参数传递而没有引号?
r ×10
dataframe ×3
dplyr ×2
function ×2
shiny ×2
charts ×1
exists ×1
filter ×1
ggplot2 ×1
if-statement ×1
namespaces ×1
object ×1
parameters ×1
quantmod ×1
quosure ×1
r-grid ×1
r-maptools ×1
rm ×1
rprofile ×1
scoping ×1
sorting ×1
sparql ×1
string ×1
substitution ×1
venn-diagram ×1
xts ×1
zoo ×1