我有一些大型文件,我在rmarkdown文档中阅读R,清理并使用ggplot2进行绘图.
大多数文件大小约为3Mb,大约有80,000行数据,但有些文件大小为12Mb,有318,406行数据(时间,扩展,强制).
Time,Extension,Load
(sec),(mm),(N)
"0.00000","0.00000","-4.95665"
"0.00200","0.00000","-4.95677"
"0.00400","0.00000","-4.95691"
"0.10400","-0.00040","-4.95423"
Run Code Online (Sandbox Code Playgroud)
这需要一段时间来浏览数据并创建pdf文件(没关系),但PDF文件现在大约有6Mb,其中有大约16个图形(事实上3个图是使用ggplot2的构面图).
据我所知,pdf包含了我的数据集中每个数据点的线段,因此当我增加图形数量时,文件中的数据量会增加.但是,我并不认为需要深入研究pdf文档,以查看详细程度,我将遇到问题,因为它接近10Mb时通过电子邮件发送.
如果我使用pdf2ps将pdf转换为ps,然后使用ps2pdf返回pdf,我得到的文件大约是原始pdf大小的1/3,质量看起来很棒.
因此,在R/knitR/ggplot2中是否有一种方法可以减少pdf图像中绘制的点数,而无需使用外部工具来压缩pdf文件?(或以某种方式优化生成的pdf?)
干杯皮特
我正在尝试基于AcceptanceSampling库创建表/数据框,如下所示:
library(AcceptanceSampling)
df<-NULL
for (aql in c(0.01,0.05)){
for (prp in c(0.95)) {
for (def in c(0.06,0.1,0.15)){
for (crp in c(0.05,0.08,0.10)){
df<-as.data.frame(rbind(df,c(aql,prp,def,crp,
find.plan(PRP=c(aql,prp),CRP=c(def,crp))$n,
find.plan(PRP=c(aql,prp),CRP=c(def,crp))$c
)))
}}}}
names(df)<-c("aql","prp","def","crp","n","Ac")
Run Code Online (Sandbox Code Playgroud)
这给了我:
aql prp def crp n Ac
1 0.01 0.95 0.06 0.05 127 3
2 0.01 0.95 0.06 0.08 116 3
3 0.01 0.95 0.06 0.10 110 3
4 0.01 0.95 0.10 0.05 61 2
5 0.01 0.95 0.10 0.08 55 2
6 0.01 0.95 0.10 0.10 52 2
7 0.01 0.95 0.15 0.05 …Run Code Online (Sandbox Code Playgroud) 早上好.
我骑自行车浏览一些数据,随时建立一个数据帧.每次我在数据框中添加或替换一行时,数值都会被归类为字符,我必须重新对它们进行分类.我假设在将数据添加到数据帧时我做错了什么?
test.df<-data.frame(SIDE=rep("",5),n=rep(NA, 5),c1=rep(NA,5),stringsAsFactors=FALSE)
test.df[1,]<-cbind("A",1,256)
test.df[2,]<-cbind("A",2,258)
test.df[3,]<-cbind("A",3,350)
test.df[4,]<-cbind("A",4,400)
test.df[5,]<-cbind("A",5,360)
summary(test.df)
SIDE n c1
Length:5 Length:5 Length:5
Class :character Class :character Class :character
Mode :character Mode :character Mode :character
Run Code Online (Sandbox Code Playgroud)
将数字列转换为数字:
test.df[, c(2:3)] <- sapply(test.df[, c(2:3)], as.numeric)
summary(test.df)
SIDE n c1
Length:5 Min. :1 Min. :256.0
Class :character 1st Qu.:2 1st Qu.:258.0
Mode :character Median :3 Median :350.0
Mean :3 Mean :324.8
3rd Qu.:4 3rd Qu.:360.0
Max. :5 Max. :400.0
Run Code Online (Sandbox Code Playgroud)
所以数据帧现在正如我所料 - 1列字符数据和2列数字.但是,如果我再次更改其中一行:
test.df[5,]<-cbind("A",5,360)
summary(test.df)
SIDE n c1
Length:5 Length:5 Length:5
Class …Run Code Online (Sandbox Code Playgroud) 我有一个大型数据框,我希望删除一些主题(过程2中主题ID为"4"的所有主题)
示例(和减少)数据集位于:http://pastebin.com/raw/Dz6xxgM3
我的dplyr过滤器线是
library(dplyr)
df<-read.table("http://pastebin.com/raw/Dz6xxgM3")
filter(df,
proc == "1" | proc == "3" | proc== "4" | proc =="5" | (proc=="2" & subject != "4")
)
Run Code Online (Sandbox Code Playgroud)
这有效但似乎很狡猾 - 我必须把一个正则表达式包含在所有程序以及proc == 2中.
在过程2中是否有更优雅/有效的方法来删除主题4的行?
干杯皮特
我正在 rmarkdown 中编写一些模板,并且我想使用内联 r 代码:
expanded uncertainty is `r var.sd*2`
Run Code Online (Sandbox Code Playgroud)
然而,由于这些变量(例如 var.sd)在之前的代码块被整理出来之前才可用,如果您尝试在 var.sd 尚未定义时打印报告,您(当然)会收到错误。
我想将代码保留在文档中但已注释掉,以便报告作者在计算 var.sd 时可以取消注释。
我看不出有什么方法可以注释掉代码,从而阻止 R 解释内联代码。我尝试放入 YAML 块(每行带有 #),并用
以下工作均不
---
expanded uncertainty is `r var.sd*2`
---
<!--
expanded uncertainty is `r var.sd*2`
-->
Run Code Online (Sandbox Code Playgroud)
R 内联代码不断被解释,因此抛出错误。
有没有另一种方法可以注释掉 R 并隐藏它?