小编lmo*_*lmo的帖子

在函数内调用时使用png函数不起作用

我有一个功能,可以根据条件执行操作然后绘制:

f <- function(n) {
  rand <- rnorm(n)
  no   <- seq_len(n)
  df   <- data.frame(no=no, rand=rand)
  if (n > 10) {
    png("plot.png")
    p <- ggplot(df)
    p + geom_point(aes(x=no, y=rand))
    dev.off()
  }
}

f(11)
Run Code Online (Sandbox Code Playgroud)

我在这结尾处得到一个空白的png文件.这里发生了什么?

plot r ggplot2

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

如何调整和保存png格式的图?

我想绘制分位数回归的结果,但我无法:

  1. 控制图的尺寸/大小
  2. 将图保存为png.

这是我的代码:

require(quantreg)
data(engel)
attach(engel)
xx <- income - mean(income)
zz <- c(120, diff(income))
fit1 <- summary(rq(foodexp~xx+zz, tau=2:98/100))
Run Code Online (Sandbox Code Playgroud)

然后:

png('res.png')
plot(fit1, mfrow=c(1,2))
Run Code Online (Sandbox Code Playgroud)

只有zz图保存到res.png文件中.有什么办法可以将图保存在单独的文件中(两个和一个)?以及如何控制图的宽度/高度?当我将它们保存到.png文件时,我喜欢所有单个图的宽度=高度(正方形)?

plot r

21
推荐指数
2
解决办法
4万
查看次数

如何从字符串向量中创建一组唯一的名称?

我有一个字符串向量.看看我的矢量,它是awesome:

> awesome
[1] "a" "b" "c" "d" "d" "e" "f" "f"
Run Code Online (Sandbox Code Playgroud)

我想创建一个长度相同的新向量,awesome但必要时,字符串已被唯一化.例如,我所需函数的有效输出将是

> awesome.uniqueified
[1] "a" "b" "c" "d.1" "d.2" "e" "f.1" "f.2"
Run Code Online (Sandbox Code Playgroud)

有一个简单的,R-thonic和美丽的方式来做到这一点?我应该说我现实生活中的列表(它没有被调用awesome)包含25000个mircoarray探针集标识符.

当我开始编写一些通用函数(我确信我能做到)时,我总是很紧张,因为我确信有些R guru过去曾经遇到过这个问题,并用一些不可思议的算法来解决这个问题.甚至必须在矢量中存储超过一半的元素.我只是不确定他们可能称之为什么.可能不是uniqueify.

r

17
推荐指数
1
解决办法
3504
查看次数

是否有命令导出当前的情节?

我正在创建一大堆图表,并希望将生成的图表导出为PDF.可以单击rstudio中的Plot选项卡中的'export'并手动选择"将绘图另存为PDF",当然,我不希望将每个部分包装在pdf()/中dev.off().

理想情况下,我想要一个功能,它将采用RStudio中当前显示的绘图并使用我想要的参数(格式/文件名/宽度/高度)保存它.

思考?

更新

根据@ naught101的建议 - 对于一个5x7(英寸!)pdf文件来说,这是一个方便的大小,可以粘贴到A4 Word文档中,以下效果很好:

dev.copy2pdf(file="example.pdf", width = 7, height = 5)
Run Code Online (Sandbox Code Playgroud)

更好的是,作为一个具有默认尺寸的易于调用的函数:

dopdf <- function(filename = "dopdf.pdf", pdf.width = 7, pdf.height = 5) {
 dev.copy2pdf(file=filename, width = pdf.width, height = pdf.height)
}
Run Code Online (Sandbox Code Playgroud)

虽然使用ggplot2会让我保存使用该ggsave功能,dev.copy2pdf是一个很好的通用解决方案(回答我原来的问题).

plot r ggplot2

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

使用上面的行中的值填充数据框

假设我有这样的数据框:

ID,  ID_2, FIRST, VALUE
-----------------------
'a', 'aa', TRUE, 2
'a', 'ab', FALSE, NA
'a', 'ac', FALSE, NA
'b', 'aa', TRUE, 5
'b', 'ab', FALSE, NA
Run Code Online (Sandbox Code Playgroud)

因此,每个ID仅为FIRST = TRUE设置VALUE.ID_2可能在ID之间重复,但不是必须的.

如何将每个ID的第一行中的数字放入该ID的所有行中,以使VALUE列变为2,2,2,5,5?

我知道我可以简单地用for循环遍历所有ID,但我正在寻找一种更有效的方法.

r dataframe

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

从数据框中删除一些值为NA的列

我有一个数据帧,其中一些值是NA.我想删除这些列.

我的data.frame看起来像这样

    v1   v2 
1    1   NA 
2    1    1 
3    2    2 
4    1    1 
5    2    2 
6    1   NA
Run Code Online (Sandbox Code Playgroud)

我试图估算col平均值并选择列意味着!= NA.我试过这个声明,它不起作用.

data=subset(Itun, select=c(is.na(colMeans(Itun))))
Run Code Online (Sandbox Code Playgroud)

我收到了一个错误,

错误:'x'必须是至少包含两个维度的数组

谁能给我一些帮助?

r dataframe na

17
推荐指数
5
解决办法
4万
查看次数

打开Rstudio时如何防止对象自动加载

每次我打开Rstudio,我都会在我的环境中找到一些变量.我怎么能一次性删除这些?

目前,每当我打开Rstudio时,我都会先运行rm(list=ls())以清除环境,然后运行必要的脚本.

我甚至试图在关闭Rstudio之前清除环境,但是在下一次启动时我会在那里找到变量.

r rstudio

16
推荐指数
2
解决办法
9143
查看次数

子集行根据一段时间

我有一个看起来像这样的数据框

            date_time loc_id node  energy   kgco2 
1 2009-02-27 00:11:08     87  103 0.00000 0.00000 
2 2009-02-27 01:05:05     87  103 7.00000 3.75900 
3 2009-02-27 02:05:05     87  103 6.40039 3.43701 
4 2009-02-27 03:05:05     87  103 4.79883 2.57697 
5 2009-02-27 04:05:05     87  103 4.10156 2.20254 
6 2009-02-27 05:05:05     87  103 2.59961 1.39599
Run Code Online (Sandbox Code Playgroud)

无论如何我可以根据时间范围对其进行子集化,例如,凌晨2点到凌晨5点.然后我应该得到一个看起来像这样的结果:

            date_time loc_id node  energy   kgco2  
3 2009-02-27 02:05:05     87  103 6.40039 3.43701 
4 2009-02-27 03:05:05     87  103 4.79883 2.57697 
5 2009-02-27 04:05:05     87  103 4.10156 2.20254 
Run Code Online (Sandbox Code Playgroud)

time r

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

阅读包含日期和数字的csv

我用R导入csv文件时遇到问题:

要导入的示例行:

2010-07-27;91
2010-07-26;93
2010-07-23;88
Run Code Online (Sandbox Code Playgroud)

我使用声明:

data <- read.csv2(file="...", sep=";", dec=".", header=FALSE)
Run Code Online (Sandbox Code Playgroud)

当我尝试将这些数据与使用统计分析产生的其他数据进行汇总时cbind,日期显示为整数,因为它是作为因子导入的.

如果我尝试将其显示为字符串使用as.character,则数字数据也会转换为字符,因此它们无法用于统计过程.

r read.csv

14
推荐指数
3
解决办法
6万
查看次数

在数据帧上使用apply时如何避免隐式字符转换

applydata.frame上使用时,参数(隐式)转换为字符.一个例子:

df <- data.frame(v=1:10, t=1:10)
df <- transform(df, t2 = as.POSIXlt(t, origin = "2013-08-13"))
class(df$t2[1])
## [1] "POSIXct" "POSIXt" (correct)
Run Code Online (Sandbox Code Playgroud)

但:

 apply(df, 1, function(y) class(y["t2"]))
 ## [1] "character" "character" "character" "character" "character" "character"
 ## [7] "character" "character" "character" "character"
Run Code Online (Sandbox Code Playgroud)

有没有办法避免这种转换?或者我总是要转换回来as.POSIXlt(y["t2"])

编辑
我的df有2个时间戳(比方说,t2和t3)和其他一些字段(比如说v1,v2).对于给定t2的每一行,我想找到k(例如3)行,其中t3最接近但小于t2(和相同的v1),并从这些行返回v2的统计量(例如平均值).我写了一个函数f(t2,v1,df),只是想在所有行上使用它apply(df, 1, function(x) f(y["t2"], y["v1"], df).在R中有没有更好的方法来做这些事情?

r apply dataframe

14
推荐指数
1
解决办法
4680
查看次数

标签 统计

r ×10

dataframe ×3

plot ×3

ggplot2 ×2

apply ×1

na ×1

read.csv ×1

rstudio ×1

time ×1