小编Mik*_*kko的帖子

如何在png中控制字体大小?

我试图为手稿制作数字,应该用MS Word书写,不接受pdf格式的数字.该期刊要求初稿中包含Word文件中嵌入的数字.这些数字的分辨率最低为300 dpi,宽度为169 mm或81 mm(两列/一列).我注意到当我将图片的分辨率指定为300(res = 300)时,字体大小将绑定到此值.这适用于一些数字(第一个例子,example.png),更糟糕的是其他人(example2.png).如何控制字体大小以使图形的尺寸和分辨率保持固定?

library(ggplot2)
library(grid)

data(iris)

vplayout <- function(x, y) viewport(layout.pos.row = x, layout.pos.col = y)

p <- ggplot(iris, aes(Species, Petal.Length))
q <- ggplot(iris, aes(Species, Petal.Width))
len <- p + geom_boxplot()
wid <- q + geom_boxplot()

png("example.png", width = 169, height = 100, units = "mm", res = 300)
grid.newpage()
pushViewport(viewport(layout = grid.layout(1, 2)))
print(len, vp = vplayout(1, 1))
print(wid, vp = vplayout(1, 2))
dev.off()

png("example2.png", width = 81, height = 100, units = "mm", res …
Run Code Online (Sandbox Code Playgroud)

png r figure ggplot2 r-grid

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

转换dataframe列类型的函数

R通常以"错误"格式理解数据框列,或者您只需要将列类从因子更改为字符以进行修改.我以前用以下方式更改了列类:

set.seed(1)

df <- data.frame(x = 1:10,
y = rep(1:2, 5),
k = rnorm(10, 5,2),
z = rep(c(2010, 2012, 2011, 2010, 1999), 2),
j = c(rep(c("a", "b", "c"), 3), "d"))

x <- c("y", "z")

for(i in 1:length(x)){
df[,x[i]] <- factor(df[,x[i]])}
Run Code Online (Sandbox Code Playgroud)

并回到数字:

x <- 1:5

for(i in 1:length(x)){
df[,x[i]] <- as.numeric(as.character(df[,x[i]]))} # Character cannot become numeric
Run Code Online (Sandbox Code Playgroud)

在我看来,也许有更好的方法做到这一点.我发现了这个问题,这正是我所需要的:

convert.magic <- function(obj,types){
out <- lapply(1:length(obj),FUN = function(i){FUN1 <- 
switch(types[i],
character = as.character,
numeric = as.numeric,
factor = as.factor); FUN1(obj[,i])})
names(out) <- …
Run Code Online (Sandbox Code Playgroud)

r function type-conversion

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

引导置信区间和对数响应比的平均值

我试图引导95%CI和测量值的平均值,以检查治疗的效果大小.我想使用的方法被称为LnRR或对数响应比(1,2,3).它的计算方法很简单Log(Response to treatment / Response to control).如果95%CI与0不重叠,则效果自然超过95%.负LnRR意味着治疗具有负面影响.

启动包中的bootstrapping功能有点令人困惑,我正在努力计算95%的CI和平均值.我试过以下:

library(boot)
set.seed(2)
dat <- data.frame(treatment = rnorm(10, 1.2, 0.4), control = rnorm(10, 1.5, 0.3))

boot(dat, function(x) log(x[,1]/x[,2]), R = 999) # Because LnRR = log(dat[,1]/dat[,2])
Run Code Online (Sandbox Code Playgroud)

我显然做错了什么.如何为这种类型的函数引导置信区间(boot.ci)?我确信答案就在这里,但出于某种原因,我无法理解如何做到这一点.

bootstrapping r

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

将变量名称分配给R中的输出图

我是R statistics的新用户.我有一个巨大的for循环,多个大型文件,循环最终给我一个图的结果.

一切正常,除了输出文件名.我想要做什么?

我在用

data1 <- read.csv("filepath/filename", header=TRUE, sep=",")
data2 <- read.csv("filepath/filename", header=TRUE, sep=",")
data3 <- read.csv("filepath/filename", header=TRUE, sep=",") 
Run Code Online (Sandbox Code Playgroud)

等等...阅读我的文件.

我希望输出图形文件名包含数据文件的名称和生成它的列.例如:

graph1-data1-data3-columnE.pdf
Run Code Online (Sandbox Code Playgroud)

重要说明:我正在阅读的所有文件都具有完全相同的列名和编号.

我应该用什么命令来做这件事?

variables filenames r graph assign

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

取消链接功能导致后续`?`和`plot`功能出错

我正在使用tempdir函数创建一个临时目录,我用unzip函数提取.zip文件.与此相关,我认为删除临时目录以避免使用废料数据填满我的计算机是件好事.为此我一直在使用unlink功能.使用unlink函数之前?plot函数会导致计算机出错(OS X Mavericks).我还没有测试其他操作系统是否属于这种情况.我做了一些谷歌搜索和一个类似的错误消息的理论是这个问题可能与加密的硬盘有关.我的硬盘已加密,因此可以匹配.但我不明白为什么这个问题plot?功能不应该与unlink我脑海中的操作有关.这是一个例子:

location <- tempdir()
?plot
#works

unlink(location, recursive = TRUE)
?plot
# Error in file(out, "wt") : cannot open the connection
Run Code Online (Sandbox Code Playgroud)

绘图在R中使用警告,但在R Studio中不起作用:

plot(1:10)
# Warning message:
# In file(out, "wt") :
# cannot open file #'/var/folders/wh/y62s7qxn29s2lvlx1nh9nxpr0000gq/T//RtmpdYlFVc/Rhttpd175551e9e35fa': No such file or # directory
Run Code Online (Sandbox Code Playgroud)

这似乎适用于R studio,但不适用于R:

graphics.off()
?plot
# works again
plot(1:10)
# this works now too
Run Code Online (Sandbox Code Playgroud)

这里发生了什么?如果问题与我的加密硬盘有关,是否有更简洁的方法来提取.zip文件而不生成废品数据?

PS.这是我的会话信息(我在R 3.0.2版中遇到了同样的问题):

sessionInfo() …
Run Code Online (Sandbox Code Playgroud)

r unzip osx-mavericks

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

R中的顺序引用编号:连字符分隔数字,如果是连续的 - 如果没有则添加逗号

我想为R中的数字生成连续引用数字.如果数字是连续的,则数字应用连字符分隔.否则数字用逗号分隔.例如,数字1, 2, 3, 5, 6, 8, 9, 10, 11 and 13应该是1-3,5,6,8-11,13.

这个问题之前已经回答过c#,我编写了一个适用于R的函数,但是这个函数可以改进.我发布此问题作为其他可能有类似需求的参考.如果您发现R的类似问题(我没有),请投票结束,我将删除该问题.

下面的功能不是很优雅,但似乎可以完成这项工作.如何使功能更短更优雅?

x <- c(1,2,3,5,6,8,9,10,11,13)

library(zoo) ## the function requires zoo::na.approx function 

##' @title Generate hyphenated sequential citation from an integer vector
##' @param x integer vector giving citation or page numbers
##' @importFrom zoo na.approx

seq.citation <- function(x) {

## Result if lenght of the integer vector is 1. 
if(length(x) == 1) return(x) else {

## Sort
x <- …
Run Code Online (Sandbox Code Playgroud)

algorithm r sequence

4
推荐指数
3
解决办法
145
查看次数

将形状、大小和颜色映射到 ggplot2 中的相同图例

我正在尝试在 ggplot 中绘制一个图形,其中颜色、形状和大小映射到变量,如下所示:0 值显示为红色十字。值 > 0 显示为圆圈,圆圈大小和颜色根据变量缩放(即圆圈越大,值越高)。我想使用分档的 viridis 比例来表示颜色。映射到颜色的值随机变化,因此缩放不应被硬编码。这是图:

library(tidyverse)

x <- tibble(x = sample(1:100, 10), y = sample(1:100, 10), z = c(0, sample(1:1e6, 9)))

color_breaks <- sort(unique(c(0, 1, pretty(x$z, n = 5), ceiling(max(x$z)))))

ggplot(x, aes(x = x, y = y, color = z, shape = z == 0, size = z)) +
  geom_point(stroke = 1.5) +
  scale_shape_manual(values = c(`TRUE` = 3, `FALSE` = 21), guide = "none") +
  scale_size(range = c(1, 8),
             breaks = color_breaks,
             limits = c(0, ceiling(max(x$z))) …
Run Code Online (Sandbox Code Playgroud)

r ggplot2

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

为什么子集不能使用与列名相同的向量名?

我遇到了一个令人困惑的子集功能"功能"(使用列名作为子集的矢量名称不起作用):

data(iris)
Species <- unique(iris$Species)
i <- 2
Species[i]
subset(iris, subset = Species == Species[i])

sp <- unique(iris$Species)
sp[i]
subset(iris, subset = Species == sp[i])
Run Code Online (Sandbox Code Playgroud)

有人可以解释一下,这里发生了什么以及为什么?

r subset

3
推荐指数
1
解决办法
930
查看次数

如何使用ggplot2和线性近似拟合和绘制指数衰减函数

我试图在只有很少时间点的数据上拟合指数衰减函数.我想使用指数衰减方程 y = y0*e^(-r*time)来比较r数据集和因子之间(或最终的半衰期).我已经理解的是,使用线性拟合,而不是NLS的是对于该特定功能的更好的选择[ 1,2 ],如果我想来估计置信区间(我做).

复制此以获取一些示例数据:

x <- structure(list(Factor = structure(c(3L, 3L, 3L, 3L, 3L, 3L, 3L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 
4L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
3L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, …
Run Code Online (Sandbox Code Playgroud)

r curve-fitting ggplot2

3
推荐指数
1
解决办法
2万
查看次数

访问工作目录之外的文件而不引用完整路径

这是一个愚蠢的例子,但我不知道如何解决这个问题。希望这能说明我的问题。我在 Windows 10 中工作。我的数据包含在此目录中:

C:/Project/Attempt1/RCode/Data/data.txt

如果我的 R 脚本在,C:/Project/Attempt1/RCode我可以像这样读取数据:

read.table(./Data/data.txt

但是,如果我的数据保留在同一个地方,但我这里有另一个脚本:

C:/Project/Attempt2/RCode

如何在data.txt不引用整个路径的情况下访问该文件?但这不起作用:.Attempt1/RCode/Data/data.txt如果我的工作目录是C:/Project/Attempt2/RCode.

为了回答这个问题,请相信以下三件事是正确的:

  • 不想重复data.txt
  • 无法使用完整路径,因为该部分(特别是驱动器)将是可变的
  • 无法移动数据

我希望这是有道理的

r relative-path

3
推荐指数
1
解决办法
6632
查看次数