在阅读并重新阅读了许多"使用dplyr编程"指南之后,我仍然无法找到解决我的特定情况的方法.
据我所知,使用group_by_,mutate_和tidyverse功能,例如"字符串型"版本向弃用的标题,这enquo是要走的路.
然而,我的情况有所不同,我正在努力寻找一种整洁的方式来解决它的整洁方式.
实际上,我的目标是在函数内创建和操作数据帧.基于其他人创建(变异)新变量,使用它们等.
但是,无论我怎么努力,我的代码都会出错或者在包检查时返回一些警告,例如no visible binding for global variable ....
这是一个可重复的例子:
这就是我想要做的事情:
df <- data.frame(X=c("A", "B", "C", "D", "E"),
Y=c(1, 2, 3, 1, 1))
new_df <- df %>%
group_by(Y) %>%
summarise(N=n()) %>%
mutate(Y=factor(Y, levels=1:5)) %>%
complete(Y, fill=list(N = 0)) %>%
arrange(Y) %>%
rename(newY=Y) %>%
mutate(Y=as.integer(newY))
Run Code Online (Sandbox Code Playgroud)
一些常见的dplyr操作预期结果应该是:
# A tibble: 5 x 3
newY N Y
<fctr> <dbl> <int>
1 1 3 1
2 2 1 2
3 3 1 …Run Code Online (Sandbox Code Playgroud) 我必须加载A需要传递给函数的这个庞大的对象(可以加权10ms的权重),该函数从中提取参数B以进一步对其施加大量计算。
A = load(file)
def function(A):
B = transorm(A)
B = compute(B)
return(B)
Run Code Online (Sandbox Code Playgroud)
为了释放一些内存(因为我已经遇到了MemoryError),我想在将A其转换为B后立即从内存中删除。我尝试过,del但它似乎并不影响A脚本级别的存在。我也尝试过,del global()["A"]但是它说A没有定义为全局变量。
有办法吗?谢谢!
包中的函数返回一个带有我想更改的预设颜色的 ggplot。
例如,让我们模拟该图:
library(ggplot2)
df <- data.frame(x = rnorm(1000))
p <- ggplot(df, aes(x=x)) +
geom_density(fill="#2196F3")
p
Run Code Online (Sandbox Code Playgroud)
这是一个蓝色填充的密度图。
我想后验地改变它的颜色。
我试过这样做:
p + scale_fill_manual(values=c("#4CAF50"))
p
Run Code Online (Sandbox Code Playgroud)
但它不会改变任何东西。
我也试过:
p <- p + geom_density(fill="black")
p
Run Code Online (Sandbox Code Playgroud)
但这在前一层之上添加了一层,而不会改变它。
我也试图深入研究 ggplot 对象,但我在那里迷路了。
有没有什么方便的方法可以改变后验几何的属性?
谢谢
我有一个在向量上定义的大函数,但我希望它也可以使用单个值。我希望第一个参数的类型是向量或数字。
我尝试以下方法:
function bigfunction(x::Vector, y::Float64=0.5)
# lots of stuff
z = x .+ y
return z
end
bigfunction(x::Number) = bigfunction()
Run Code Online (Sandbox Code Playgroud)
该函数适用于向量,但不适用于数字。
bigfunction([0, 1, 3])
bigfunction(2)
Run Code Online (Sandbox Code Playgroud)
Union{}我应该像有时看到的那样做一些事情吗?或者以不同的方式重新定义方法?
我想在曲线下填充一个小区域.然而,带状宝石连接分布的两个"部分".
library(tidyverse)
density(rnorm(1000, 0, 1)) %$%
data.frame(x=x, y=y) %>%
mutate(area = dplyr::between(x, 1.5, 2.6)) %>%
ggplot() +
geom_ribbon(aes(x = x, ymin = 0, ymax = y, fill = area))
Run Code Online (Sandbox Code Playgroud)
我相信避免这种行为的方法之一是将分布分成三个不同的部分,并用相同的颜色填充它们中的两个.但是,我正在寻找一种更加整洁和优雅的方式.
如何将向量中的字符或字符串连接到一个字符串中,以便 ["a", "b", "c"] 变为 "abc"?
我已经尝试过使用 vcat、hcat,但似乎没有任何效果...谢谢
join(["a", "b", "c"])
我需要在多个因素上建立一个平滑项的模型。该by论证允许我对每个因子水平进行平滑建模,但我找不到如何在多个因子上做到这一点。
我尝试了类似于以下的解决方案,但没有成功:
data <- iris
data$factor2 <- rep(c("A", "B"), 75)
mgcv::gam(Sepal.Length ~ s(Petal.Length, by = c(Species, factor2)), data = data)
#> Error in model.frame.default(formula = Sepal.Length ~ 1 + Petal.Length + : variable lengths differ (found for 'c(Species, factor2)')
Run Code Online (Sandbox Code Playgroud)
由reprex 包(v2.0.0)创建于 2021-08-05
欢迎任何帮助!
我想在分组后汇总时,计算另一个因素的特定级别的数量。
在下面的工作示例中,我想计算"male"每个组中的级别数。我已经尝试了很多计数、计数等方法,但找不到一种简单明了的方法来做到这一点。
df <- data.frame(Group=replicate(20, sample(c("A","B"), 1)),
Value=rnorm(20),
Factor=replicate(20, sample(c("male","female"), 1)))
df %>%
group_by(Group) %>%
summarize(Value = mean(Value),
n_male = ???)
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助!
我目前正在努力解决如何按照APA-6建议报告的结果rstanarm::stan_lmer().
首先,我将在频率论方法中使用混合模型,然后尝试使用贝叶斯框架进行相同的操作.
以下是获取数据的可重现代码:
library(tidyverse)
library(neuropsychology)
library(rstanarm)
library(lmerTest)
df <- neuropsychology::personality %>%
select(Study_Level, Sex, Negative_Affect) %>%
mutate(Study_Level=as.factor(Study_Level),
Negative_Affect=scale(Negative_Affect)) # I understood that scaling variables is important
Run Code Online (Sandbox Code Playgroud)
现在,让我们以"传统"的方式拟合线性混合模型来测试性别(男/女)对负面情绪(负面情绪)的影响,以及研究水平(教育年限)作为随机因素.
fit <- lmer(Negative_Affect ~ Sex + (1|Study_Level), df)
summary(fit)
Run Code Online (Sandbox Code Playgroud)
输出如下:
Linear mixed model fit by REML t-tests use Satterthwaite approximations to degrees of
freedom [lmerMod]
Formula: Negative_Affect ~ Sex + (1 | Study_Level)
Data: df
REML criterion at convergence: 3709
Scaled residuals:
Min 1Q Median 3Q Max
-2.58199 -0.72973 0.02254 0.68668 2.92841 …Run Code Online (Sandbox Code Playgroud) 我想检查我的矢量/数组是否由数字组成.
我试过了:
if isa(x, Array{Number})
println("yes")
end
Run Code Online (Sandbox Code Playgroud)
但它似乎不起作用......
r ×6
julia ×3
dplyr ×2
ggplot2 ×2
tidyverse ×2
area ×1
bayesian ×1
brms ×1
character ×1
del ×1
dispatch ×1
fill ×1
function ×1
gam ×1
group-by ×1
if-statement ×1
memory ×1
methods ×1
mgcv ×1
mixed-models ×1
mutate ×1
nse ×1
optimization ×1
plot ×1
python ×1
rstan ×1
smoothing ×1
stan ×1
string ×1
summarize ×1
types ×1