我遇到了以下问题
vec <- c("a11","b21","c31")
df <- data.frame(a = c(0,0,0), b = c(1,1,1), row.names = vec)
df["a",]
Run Code Online (Sandbox Code Playgroud)
回报
df["a",]
a b
a11 0 1
Run Code Online (Sandbox Code Playgroud)
然而,
"a" %in% vec
Run Code Online (Sandbox Code Playgroud)
和
"a" %in% rownames(df)
Run Code Online (Sandbox Code Playgroud)
两者都返回False
当使用字母后跟行号的数字时,R允许字符串的部分匹配.我已经在R v3.2.2和R v3.2.1上复制了这个.甚至
df[["a",1,exact=T]]
Run Code Online (Sandbox Code Playgroud)
返回0
有什么我可以设置,以便R不允许这种部分匹配?
有了这个问题,我只对在使用Shiny应用程序时使用软件包的最佳方法有所了解.尽管与提出与R相关的问题的良好做法相反,这个问题不包含代码或可重复的例子,但我希望它涉及实际和相关的问题.
我正在开发一个具有以下结构的模块化 Shiny应用程序:
server.R - 包含一些关键功能和前几个初始图形ui.R - 提供基本的用户界面框架data - 包含一些动态源数据文件的文件夹
list.csv - 包含数据的示例文件... - 其他数据文件functionsAndModules- 包含*.R与功能和模块有关的文件的文件
夹functionCleanGeo.R - 简单的功能清理一些格式的数据帧: cleanDataFrame <- function(data) { ... return(cleanDta) }moduleTimeSeries.R - 提供时间序列分析的模块,执行以下操作:
...R- 保存为*.R文件的其他模块和功能.我想知道的是如何处理对于上面概述的app结构最佳的加载包.特别是,我想知道:
当只在in global.R和when(如果有的话)加载库就足够了,可能需要在模块文件和/或server.R/ ui.r?之间加载库.
1.2.对于使用时例如shinyTree包我在加载server.R和ui.R为,这是我的理解,这从实施例流动.模块和功能使用dplyr/ tidyr组合,是否足以加载这些包global.R?
我首选的加载包的方法看起来如下:
Vectorize(require)(package = c("ggvis", "SPARQL", "jsonlite", …
我正在寻找使用内部格式化表格.scales::dollar mutate_all
使用以下方法可以获得所需的结果sapply:
>> sapply(mtcars, scales::dollar)
mpg cyl disp hp drat wt qsec vs am gear carb
[1,] "$21.00" "$6" "$160.00" "$110" "$3.90" "$2.62" "$16.46" "$0" "$1" "$4" "$4"
[2,] "$21.00" "$6" "$160.00" "$110" "$3.90" "$2.88" "$17.02" "$0" "$1" "$4" "$4"
[3,] "$22.80" "$4" "$108.00" "$93" "$3.85" "$2.32" "$18.61" "$1" "$1" "$4" "$1"
[4,] "$21.40" "$6" "$258.00" "$110" "$3.08" "$3.22" "$19.44" "$1" "$0" "$3" "$1"
Run Code Online (Sandbox Code Playgroud)
试图通过实现相同的结果dplyr管道和 scales::dollar:
mtcars %>% …Run Code Online (Sandbox Code Playgroud) 鉴于dplyr工作流程:
require(dplyr)
mtcars %>%
tibble::rownames_to_column(var = "model") %>%
filter(grepl(x = model, pattern = "Merc")) %>%
group_by(am) %>%
summarise(meanMPG = mean(mpg))
Run Code Online (Sandbox Code Playgroud)
我有兴趣filter根据价值有条件地申请applyFilter.
对于applyFilter <- 1使用"Merc"字符串过滤行,而不使用过滤器返回所有行.
applyFilter <- 1
mtcars %>%
tibble::rownames_to_column(var = "model") %>%
filter(model %in%
if (applyFilter) {
rownames(mtcars)[grepl(x = rownames(mtcars), pattern = "Merc")]
} else
{
rownames(mtcars)
}) %>%
group_by(am) %>%
summarise(meanMPG = mean(mpg))
Run Code Online (Sandbox Code Playgroud)
建议的解决方案效率低,因为ifelse始终会评估调用; 更可取的方法只会评估filter步骤applyFilter <- 1.
在低效的 …
我正在使用下面的代码来丰富一个箱形图,其中包含在x轴上创建的分类变量的汇总表.
# Libs
require(ggplot2); require(gridExtra); require(grid); require(ggthemes)
# Data
data(mtcars)
# Function to summarise the data
fun_dta_sum <- function(var_sum, group, data) {
sum_dta <- data.frame(
aggregate(var_sum ~ group, FUN = min, data = data),
aggregate(var_sum ~ group, FUN = max, data = data),
aggregate(var_sum ~ group, FUN = mean, data = data))
sum_dta <- sum_dta[,c(1,2,4,6)]
colnames(sum_dta) <- c("Group (x axis)", "min", "max", "mean")
rownames(sum_dta) <- NULL
sum_dta[,-1] <-round(sum_dta[,-1],1)
return(sum_dta)
}
# Graph
ggplot(data = mtcars, aes(x = cyl, y = …Run Code Online (Sandbox Code Playgroud) 我正在使用下面的代码生成一个简单的箱线图ggplot2:
# Libs data
data("mtcars"); require(ggplot2); require(ggthemes)
# Chart
ggplot(data = mtcars) +
geom_boxplot(aes(y = wt, x = as.factor(am)),
fill = "gray87") +
xlab("AM") +
ylab("WT") +
theme_gdocs() +
ggtitle("WT by AM") +
theme(axis.title.y = element_text(angle = 90),
axis.ticks = element_line(colour = "black", linetype = "solid",
size = 0.5),
panel.grid = element_line(colour = "gray"))
Run Code Online (Sandbox Code Playgroud)
我想为我的图表添加一个副标题,并对它的呈现方式进行一些控制。我正在关注此讨论并使用代码:
# Chart
ggplot(data = mtcars) +
geom_boxplot(aes(y = wt, x = as.factor(am)),
fill = "gray87") +
xlab("AM") +
ylab("WT") …Run Code Online (Sandbox Code Playgroud) 我正在使用以下格式的字符向量:
[-0.2122,-0.1213)
[-0.2750,-0.2122)
[-0.1213,-0.0222)
[-0.1213,-0.0222)
Run Code Online (Sandbox Code Playgroud)
我想删除[,)所以我可以获得所需的结果:
-0.2122,-0.1213
-0.2750,-0.2122
-0.1213,-0.0222
-0.1213,-0.0222
Run Code Online (Sandbox Code Playgroud)
我想在语法的路线上捕获第一组和第二组:
[[^\[{1}(?![[:digit:]])\){1}
Run Code Online (Sandbox Code Playgroud)
但它似乎没有用,(regex101).
代码:[[:punct:]]将捕获所有标点符号regex101.
然后我尝试匹配这两组:(\[)(\))但是,再次,不缺乏regex101.
通过应用gsub两次或使用包中的multigsub可用性可以很容易地解决问题,qdap但我有兴趣通过一个表达式来解决这个问题.
我想知道如何能够提出一种lm公式语法,使我能够paste与cbind多元多元回归一起使用.
在我的模型中,我有一组变量,它们对应于下面的原始示例:
data(mtcars)
depVars <- paste("mpg", "disp")
indepVars <- paste("qsec", "wt", "drat")
Run Code Online (Sandbox Code Playgroud)
我想用我depVars和我创建一个模型indepVars.手动输入的模型看起来像这样:
modExmple <- lm(formula = cbind(mpg, disp) ~ qsec + wt + drat, data = mtcars)
Run Code Online (Sandbox Code Playgroud)
我有兴趣生成相同的公式,而不引用变量名称,只使用上面定义的depVars和indepVars向量.
例如,我的想法将对应于:
mod1 <- lm(formula = formula(paste(cbind(paste(depVars, collapse = ",")), " ~ ",
indepVars)), data = mtcars)
Run Code Online (Sandbox Code Playgroud)
我也尝试过这个:
mod2 <- lm(formula = formula(cbind(depVars), paste(" ~ ",
paste(indepVars,
collapse = " + "))),
data = …Run Code Online (Sandbox Code Playgroud) 给定嵌套数据,我想对across任意选择的列应用一个简单的函数。使用across我想迭代传递给函数一个参数的列的选择,并保持第二个参数不变。
# Using across within nested data frame\n\n# Gapminder data from gapminder package\nlibrary("tidyverse")\ndata("gapminder", package = "gapminder")\n\n# Sample function\nsample_function <- function(.data, var_a, var_b) {\n var_a <- enquo(var_a)\n var_b <- enquo(var_b)\n .data %>%\n mutate(some_res = log(!!var_a) + !!var_b) %>%\n pull(some_res)\n}\n\n\n# Basic example, not working\ngapminder %>%\n group_by(country, continent) %>%\n nest() %>%\n mutate(sample_res = map(\n .x = data,\n .f = across(\n .cols = vars(year, lifeExp, pop),\n .fns = ~ sample_function(var_a = .x),\n …Run Code Online (Sandbox Code Playgroud) r ×9
dplyr ×3
boxplot ×2
charts ×2
ggplot2 ×2
string ×2
cbind ×1
conditional ×1
dataframe ×1
formatting ×1
formula ×1
gridextra ×1
gsub ×1
lm ×1
matching ×1
module ×1
nested ×1
package ×1
pipeline ×1
plotmath ×1
punctuation ×1
regex ×1
replace ×1
rowname ×1
shiny ×1
text ×1
text-editor ×1
tibble ×1
vim ×1
vim-plugin ×1
workflow ×1