我经常使用逗号分隔的值,并且对read_csv()
和之间的差异感到好奇read.csv()
。
是否有任何实际差异可以揭示两者的情境使用?
我注意到我想使用的包中的函数存在错误。GitHub 上出现了一个问题,但创建者还没有解决这个问题,我需要尽快使用该功能。
因此我想编辑代码。显然,这可以通过编辑源代码、重新打包和安装整个包来实现,我可以重写函数并重新分配命名空间,但也可能只使用trace()
.
我已经发现我可以做到:
as.list(body(package:::function_inside_function))
Run Code Online (Sandbox Code Playgroud)
我要编辑的行位于该函数的第二步。
具体来说,我需要编辑的就是代码中的这一行。我必须更改ignore.case
为ignore.case=TRUE
. 链接失效的例子:
functionx(){if{...} else if(grepl("miRNA", data.type, ignore.case)) {...}}
Run Code Online (Sandbox Code Playgroud)
我还没有真正找到如何从这里开始的实际示例,所以有人可以向我展示如何执行此操作的示例,或者引导我找到使用跟踪的实际示例吗?或者也许将函数重新分配给名称空间?
我遇到了使用patchwork
when组合图的问题theme(aspect.ratio = 1)
。提供了一些示例:
library(tidyverse)
library(patchwork)
# Create the base plots
plotlist = list(
fig1 = iris %>%
filter(Species == "setosa") %>%
ggplot(aes(x = Sepal.Length, y = Sepal.Width)) +
geom_point(),
fig2 = iris %>%
filter(Species == "versicolor") %>%
ggplot(aes(x = Sepal.Length, y = Sepal.Width)) +
geom_point(),
fig3 = iris %>%
filter(Species == "virginica") %>%
ggplot(aes(x = Sepal.Length, y = Sepal.Width)) +
geom_point()
)
# Here patchwork combines the plots nicely
plotlist$fig1 / (plotlist$fig2 + plotlist$fig3)
Run Code Online (Sandbox Code Playgroud)
# However, …
Run Code Online (Sandbox Code Playgroud) 在上一个问题中,我询问如何将作业 B 排队在作业 A 之后启动,这是通过
sbatch --dependency=after:123456:+5 jobB.slurm
其中123456
是作业 A 的 id,:+5
表示它将在作业 A 后五分钟开始。我现在需要对多个作业执行此操作。工作 B 应该依赖于工作 A,工作 C 依赖于 B,工作 D 依赖于 C。
sbatch jobA.slurm
将返回Submitted batch job 123456
,并且我需要将作业 id 传递给除第一个作业之外的所有作业的依赖项调用。由于我使用的是繁忙的集群,因此我不能依赖于将作业 ID 加一,因为有人可能会在其间排队作业。
因此,我想编写一个接受作业脚本的脚本(*.slurm
)我想作为参数运行,例如
./run_jobs.sh jobA.slurm jobB.slurm jobC.slurm jobD.slurm
然后,对于传递给它的所有作业脚本,该脚本应该运行,
sbatch jobA.slurm # Submitted batch job 123456
sbatch --dependency=after:123456:+5 jobB.slurm # Submitted batch job 123457
sbatch --dependency=after:123457:+5 jobC.slurm # Submitted batch job 123458
sbatch --dependency=after:123458:+5 jobD.slurm # Submitted batch job …
Run Code Online (Sandbox Code Playgroud) 使用 RStudio 时,可以在“绘图”窗格或内置查看器中检查绘图。然而,我注意到与保存的绘图相比,这些预览的质量较差。显然,可以导出或保存图像,并且不乏方法(pdf()
、png()
、ggsave()
等)。
作为iris
示例,以下屏幕截图产生以下图
library(tidyverse)
p.iris = iris %>%
ggplot(aes(x = Sepal.Length, y = Sepal.Width)) +
geom_point() +
geom_smooth(method = "lm", se = FALSE)
p.iris
Run Code Online (Sandbox Code Playgroud)
与相同情节的保存版本相比,具有高 DPI。
ggsave(plot = p.iris, filename = "Example.png", dpi = 320)
Run Code Online (Sandbox Code Playgroud)
如果检查绘图预览,您可以看到绘图已保存到.png
library(tidyverse)
p.iris = iris %>%
ggplot(aes(x = Sepal.Length, y = Sepal.Width)) +
geom_point() +
geom_smooth(method = "lm", se = FALSE)
p.iris
Run Code Online (Sandbox Code Playgroud)
假设我不介意使用额外的资源或时间来呈现更好质量的预览 - 我会调整哪些设置?
到目前为止,我只看到了一些示例,其中 Node.js 中的应用程序已设置为 websockets 的服务器。通常客户端是基于浏览器的,我还没有看到 Node.js 客户端的例子。
Node.js websocket 客户端的例子怎么这么少?或者,客户端-服务器通信还有哪些其他选择?
有时我会制作两个相似但数据不同的图。因此,X 轴和 Y 轴将具有不同的范围。
library(ggplot2)
library(ggpubr)
#> Loading required package: magrittr
df1 <- data.frame(x=runif(10)*2,y = runif(10)*2)
df2 <- data.frame(x=runif(10)*3,y = runif(10)*1)
p1 <- qplot(x = x, y = y, data = df1, geom = "line")
p2 <- qplot(x = x, y = y, data = df2, geom = "line")
ggarrange(p1,p2)
Run Code Online (Sandbox Code Playgroud)
由reprex 包(v0.3.0)于 2020 年 7 月 9 日创建
这可以通过使用xlim
和显式声明范围来手动克服ylim
,但这既令人厌烦,而且如果不小心可能会导致某些数据超出指定范围。
理想的解决方案是从 动态获取限制p1
,如果这些限制大于的限制,则p2
使用它们代替p2
。例如p2 + xlim(getLimits(p1))
。
支持这样的东西吗?
编辑: 有人提出了 …
我最近发现 R 允许链接赋值,例如
a = b = 1:10
a
[1] 1 2 3 4 5 6 7 8 9 10
b
[1] 1 2 3 4 5 6 7 8 9 10
Run Code Online (Sandbox Code Playgroud)
然后我认为如果两个参数应采用相同的值,这也可以在函数中使用。然而,事实并非如此。例如,plot(x = y = 1:10)
会产生以下错误:Error: unexpected '=' in "plot(x = y ="
。有什么不同,为什么这不起作用?我猜这与只有第一个返回到函数有关,但两者似乎都被评估了。
R 中的链式赋值有哪些可能性和限制?
我发现这across()
对于在多个列上重复操作非常有用。但是,我仍然没有完全理解如何选择特定列进行操作。
假设我想将函数应用于mtcars
、和之外 的所有列。gear
carb
我尝试过类似的东西
# Function to use over columns
demean <- function(x) {
x - mean(x, na.rm = TRUE)
}
# Use function on all but columns gear and carb
mtcars %>% mutate(across(.cols = select(.,-gear,-carb), demean))
Run Code Online (Sandbox Code Playgroud)
但是,这会引发错误
Error: Problem with `mutate()` input `..1`.
x Must subset columns with a valid subscript vector.
x Subscript has the wrong type `data.frame<
Run Code Online (Sandbox Code Playgroud)
取消选择某些列的正确方法是什么across
?
我一直在尝试寻找有关如何使用以下选项来实现作业依赖项的示例-d, --dependency=<dependency_list>
。
在文档中,语法显示为after:job_id[[+time][:jobid[+time]...]]
但我无法找到任何示例,而且说实话,我发现语法的表示令人困惑。
我已经尝试过sbatch --dependency=after:123456[+5] myjob.slurm
and sbatch --dependency=after:123456+5 myjob.slurm
,但这会产生错误
sbatch: error: Batch job submission failed: Job dependency problem
。
如何添加依赖项以Job B
使其在Job A
启动后 X 分钟启动?