小编jan*_*glx的帖子

"tfread"存在吗?

In R有一种有效的方法来读取转置.csv文件吗?

例如,考虑以下文本文件:

Name,Peter,Paul,Marry
Age,40,9,38
Run Code Online (Sandbox Code Playgroud)

这可以通过以下方式读入data.table有用的列类:

library(data.table)    
file <-  tempfile("tmp.txt")
writeLines("Name,Peter,Paul,Mary\nAge,40,5,38\n", file)    

lines <- readLines(file)
lines <- lapply(lines, function(x) gsub(pattern=",", replacement="\n", x, fixed=TRUE))
lines <- lapply(lines[-3], fread)
do.call(cbind,lines)
#>     Name Age
#> 1: Peter  40
#> 2:  Paul   5
#> 3:  Mary  38
Run Code Online (Sandbox Code Playgroud)

有没有更简单的方法来实现这一目标?是否有更高效的版本(我的文件是1 GB)?

请注意,对于列式存储应该更容易阅读这样的列主存储,如a data.table.

csv r data.table

6
推荐指数
1
解决办法
212
查看次数

如何光栅化ggplot的单层?

Matplotlib 允许对绘图的各个元素进行光栅化并将其保存为混合像素/矢量图形 ( .pdf)(参见例如此答案)。如何在Rwith 中实现相同的效果ggplot2


以下是一个玩具问题,我只想对geom_point图层进行光栅化。

set.seed(1)
x <- rlnorm(10000,4)
y <- 1+rpois(length(x),lambda=x/10+1/x)
z <- sample(letters[1:2],length(x), replace=TRUE)

p <- ggplot(data.frame(x,y,z),aes(x=x,y=y)) +
  facet_wrap("z") +
  geom_point(size=0.1,alpha=0.1) +
  scale_x_log10()+scale_y_log10() +
  geom_smooth(method="gam",formula = y ~ s(x, bs = "cs"))
print(p)
ggsave("out.pdf", p)
Run Code Online (Sandbox Code Playgroud)

.pdf原样保存时,Adobe reader DC 需要大约 1 秒来渲染图形。您可以在下面看到一个.png版本: 出.png

当然,通常可以通过不绘制原始数据来避免该问题

r ggplot2

5
推荐指数
1
解决办法
1698
查看次数

在同一个 geom_text 上使用 ggrepel 和 Shadowtext

我有一个图(用 R 制作ggplot2),它是一堆文本数据的奇异值分解的结果,所以我基本上有一个数据集,其中包含一些评论中使用的约 100 个单词和约 10 个评论类别,具有 2D 坐标对于他们每个人来说。由于文本量太大以及许多重要点的距离有多近,我很难让情节看起来清晰。

我的数据现在的结构方式是,我geom_texts用不同的格式绘制两个不同的数据,并为每个数据传递一个单独的坐标数据框。这更容易,因为如果 ~10 个类别与 ~100 个术语重叠(这是次要的)就可以了,而且我想要这两个类别有相当不同的格式,但不一定有理由不能将它们放在一起数据框,geom我想是否有人能找到解决方案。

我想做的是使用该ggrepel功能,使 ~10 个类别相互排斥,并使用该shadowtext功能使它们从彩色单词的背景中脱颖而出,但由于它们不同,geom我不确定如何为了实现这一目标。

带有一些虚假数据的最小示例:

library(ggplot2)
library(ggrepel)
library(shadowtext)

dictionary <- c("spicy", "Thanksgiving", "carborator", "mixed", "cocktail", "stubborn",
                "apple", "rancid", "table", "antiseptic", "sewing", "coffee", "tragic",
                "nonsense", "stufing", "words", "bottle", "distillery", "green")

set.seed(1)

data.frame(
  Dim1 = rnorm(100),
  Dim2 = rnorm(100),
  Term = sample(dictionary, 100, replace = TRUE),
  Color = as.factor(sample.int(10, 100, replace = TRUE))
) -> words


data.frame( …
Run Code Online (Sandbox Code Playgroud)

charts r ggplot2 ggrepel

5
推荐指数
1
解决办法
1800
查看次数

如何将`.Rmd`的所有ggplots保存为`.rds`

我使用 Markdown 文档进行分析。我创建了大量的绘图并使用 knitr::opts_chunk$set(dev= c("png", "svg", "pdf")rmarkdown::render(... , clean = FALSE)获取 png(用于谷歌幻灯片)、svg(用于 powerpoint)和 pdf(包含在手动乳胶报告中)。但是,我现在想将不同分析的绘图合并到图形面板中,同时能够更改绘图大小和纵横比,而无需每次重新运行所有分析。

实现此目的的一种方法是将 ggplots 保存在分析笔记本中.rds使用的文件中以及生成图形面板的单独脚本中。这可以使用钩子部分自动化:saveRDS(ggplot2::last_plot(), "figure_1.rds")library(patchwork); readRDS("figure_1.rds") / readRDS("figure_2.rds")

example_analysis.Rmd

```{r setup}
knitr::opts_chunk$set(dev= c("png", "svg", "pdf")
knitr::knit_hooks$set(hook_save_plot_as_rds = function(before, options, envir, name) {
  if(before) return() # run only after chunk
  if(length(knitr:::get_plot_files())==0) return() # only run if 
  saveRDS(ggplot2::last_plot(), knitr::fig_chunk(knitr::opts_chunk$get("label"), ext = "rds"))
})
```
Here we do some heavy analysis
```{r sepal-plot}
ggplot(iris, aes(Sepal.Width, Sepal.Length)) + geom_point()
```

Here we do some …
Run Code Online (Sandbox Code Playgroud)

r knitr r-markdown

5
推荐指数
2
解决办法
135
查看次数

matlab怎么能找不到匿名函数?

运行我的脚本时出现一个奇怪的错误:

Unable to find function @(x) exp(x) within H:\blabla\myClass.m.
Run Code Online (Sandbox Code Playgroud)

当我调试时,我得到:

34  b=myAnonymousFunction(a)
K>> myAnonymousFunction(3)
Unable to find function @() exp(x) within HH:\blabla\myClass.m.
K>> class(myAnonymousFunction)
ans =
function_handle
Run Code Online (Sandbox Code Playgroud)

我试图生产的最小例子很好.

你有任何想法错误来自何处及其含义?因为他显然可以找到精神错乱的定义......啊...... myAnonymousFunction.这只是一个错误吗?我在matlabcentral上阅读了一些内容,但它的7岁却没有给出解释.

进一步说明:

我在Windows 8 64位下运行MATLAB 2012 b.源文件最初是在64位Linux下编写的.

我不认为这是相关的,但myAnonymousFunction是myClass中函数的参数并存储在单元格数组中.所以它是这样的:文件myClass.m:

classdef myclass < handle
  properties
    x=1337;
    myAnonymousFunctions;
  end
  methods
   function new = myClass(myAnonymousFunctions)
     new.myAnonymousFunction=myAnonymousFunction
   end
   function show(o)
     disp(myAnonymousFunction{1}(o.x));
   end
  end
end
Run Code Online (Sandbox Code Playgroud)

并被称为像

myMyclass = myClass({@(x)exp(x)})
myMyClass.f();
Run Code Online (Sandbox Code Playgroud)

matlab

4
推荐指数
1
解决办法
387
查看次数

标签 统计

r ×4

ggplot2 ×2

charts ×1

csv ×1

data.table ×1

ggrepel ×1

knitr ×1

matlab ×1

r-markdown ×1