当许多点重叠时,散点图很难解释,因为这种重叠会掩盖特定区域中的数据密度.一种解决方案是对绘制点使用半透明颜色,以便不透明区域表示在这些坐标中存在许多观察.
下面是我在R中的黑白解决方案的示例:
MyGray <- rgb(t(col2rgb("black")), alpha=50, maxColorValue=255)
x1 <- rnorm(n=1E3, sd=2)
x2 <- x1*1.2 + rnorm(n=1E3, sd=2)
dev.new(width=3.5, height=5)
par(mfrow=c(2,1), mar=c(2.5,2.5,0.5,0.5), ps=10, cex=1.15)
plot(x1, x2, ylab="", xlab="", pch=20, col=MyGray)
plot(x1, x2, ylab="", xlab="", pch=20, col="black")
Run Code Online (Sandbox Code Playgroud)

然而,我最近在PNAS中发现了这篇文章,它采用了类似的方法,但使用热图着色而不是不透明度作为重叠点数的指标.这篇文章是Open Access,所以任何人都可以下载.pdf并查看图1,其中包含我想要创建的图形的相关示例.本文的方法部分表明分析是在Matlab中完成的.
为方便起见,这里是上述文章中图1的一小部分:

如何在R中创建一个散点图,使用颜色而不是不透明度作为点密度的指标?
对于初学者,R用户可以install.packages("fields")使用该功能在库中访问此Matlab配色方案tim.colors().
是否有一种简单的方法可以制作出类似于上述文章图1的数字,但是在R?谢谢!
题:
我在R.工作.我希望2 data.tables(共享含义相同的列名)的共享列具有匹配的类.我正在努力将一种未知类的对象一般转换为另一个对象的未知类.
更多背景:
我知道如何设置类列在data.table,我知道大概的as功能.此外,这个问题并不完全data.table具体,但是当我使用data.tables 时,它经常会出现.此外,假设期望的强制是可能的.
我有2个data.tables.它们共享一些列名称,这些列旨在表示相同的信息.对于表A和表B共享的列名,我希望A的类与B中的类(或其他方式)相匹配.
示例data.tables:
A <- structure(list(year = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L), stratum = c(1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, …Run Code Online (Sandbox Code Playgroud) 我已经将.RData文件(使用创建save())上传到ftp服务器,我正在尝试使用getURL()来下载同一个文件.对于我读过的所有示例和帖子,我似乎无法让它工作.
使用以下命令保存.RData文件:
save(results, file=RDataFilePath, compress="xz") #save object "results" w/ compression
#RDataFilePath is the location of the results.RData file on my harddrive
Run Code Online (Sandbox Code Playgroud)
这些数据使用以下方式上载
uploadURL <-"ftp://name:password@host/folder/results.RData" #name the url
ftpUpload(RDataFilePath, to=uploadURL, connecttimeout=120) #upload
Run Code Online (Sandbox Code Playgroud)
这就是我尝试下载results.RData的方法getURL:
downloadURL <- "host/folder/results.RData"
load(getURL(downloadURL, userpwd="name:password", connecttimeout=120))
Run Code Online (Sandbox Code Playgroud)
这给出了以下错误:
Error in curlPerform(curl = curl, .opts = opts, .encoding = .encoding) :
embedded nul in string: 'ý7zXZ'
Run Code Online (Sandbox Code Playgroud)
当我将downloadURL字符串粘贴到我的浏览器中时,.RData文件立即下载,所以我知道没有拼写错误.错误消息表明url无法读取压缩格式的b/c; 但是,当我使用save()w/o压缩时,我收到类似的错误消息.
尝试从FTP下载.csv时,我也收到错误消息:
read.csv(getURL(downloadURL1)) #downloadURL1 is similar to downloadURL, but points to the .csv file
Error …Run Code Online (Sandbox Code Playgroud) 也许这是基本的东西,但我找不到答案.
我有
Id Year V1
1 2009 33
1 2010 67
1 2011 38
2 2009 45
3 2009 65
3 2010 74
4 2009 47
4 2010 51
4 2011 14
Run Code Online (Sandbox Code Playgroud)
我需要只选择具有相同Id但在2009年,2010年和2011年的三年中的行.
Id Year V1
1 2009 33
1 2010 67
1 2011 38
4 2009 47
4 2010 51
4 2011 14
Run Code Online (Sandbox Code Playgroud)
我试试
d1_3 <- subset(d1, Year==2009 |Year==2010 |Year==2011 )
Run Code Online (Sandbox Code Playgroud)
但它不起作用.
任何人都可以提供一些建议,告诉我如何在R中做到这一点?
我正在整理带有以下YAML设置的Rmarkdown PDF文档:
---
output:
pdf_document:
fig_caption: true
fig_crop: true
toc_depth: 3
header-includes:
- \usepackage{hyperref}
---
Run Code Online (Sandbox Code Playgroud)
在文档正文中,我使用以下语法插入了一些PNG图像
Paragraph 1..........

Paragraph 2....
Run Code Online (Sandbox Code Playgroud)
并且在渲染文档时,图像在文本中,在Paragraph 1和之间显示为预期的Paragraph 2.但是,我得到一些不可预知的结果,Paragraph 2在某些情况下渲染的图像出现后,我无法解决它.
首先,我应该说很多这都是我的头脑,所以我提前道歉使用了不正确的术语,可能会提出一个不明确的问题.我正尽最大能力.
另外,我看到了ThisPost ; 是RCurl我想用此任务的工具?
每隔4个月,我将分析新数据,并生成需要上传到网站的.csv文件和.png文件,以便其他团队成员进行检查.我(几乎)自动化了所有数据收集,数据下载,分析和文件保存.分析在R中执行,R保存文件.目前我使用Filezilla手动将新文件上传到网站.有没有办法使用R将文件上传到网站,这样我就不必打开Filezilla并拖放文件了?
运行我的R代码然后离开是很好的,知道一旦它完成运行,新保存的文件将自动放在网站上.
谢谢你的帮助!
我怎么"1330"变成"13:30"或"133000"变成"13:30:00"?基本上,我想在每对数字之间插入一个冒号.我正在尝试将字符转换成时间.
似乎应该有一种非常优雅的方式来做到这一点,但我想不到它.我想使用的某种组合的paste()和substr(),而是一种优雅的解决方案是逃避我.
编辑:需要转换的示例字符串:
X <- c("120000", "120500", "121000", "121500", "122000", "122500", "123000") #example of noon to 12:30pm
Run Code Online (Sandbox Code Playgroud) 我有一个问题,将列表写入r中的文本文件.这是我的代码:
library(e1071)
mydata = read.table("TRAIN.txt", sep = ",", header = FALSE)
model <- naiveBayes(as.factor(V1) ~., data = my data)
Run Code Online (Sandbox Code Playgroud)
我想把"模型"写入文本文件.这是"模型"格式:
A-priori probabilities:
Y
0 1
0.703125 0.296875
Conditional probabilities:
V2
Y [,1] [,2]
0 0.1327792 1.1571522
1 -0.1276267 0.9334735
V3
Y [,1] [,2]
0 -0.2414282 1.0982461
1 -0.2269481 0.7594525
Run Code Online (Sandbox Code Playgroud)
我尝试了以下方法:
write(model, "TEST.txt")
Run Code Online (Sandbox Code Playgroud)
并得到以下错误:
Error in cat(list(...), file, sep, fill, labels, append) :
argument 1 (type 'list') cannot be handled by 'cat'
Run Code Online (Sandbox Code Playgroud)
然后我试了
lapply(model, cat, file='test.txt', append=TRUE)
Run Code Online (Sandbox Code Playgroud)
并得到了同样的错误.
对于输出,规格是%Z(见?strptime).但是对于输入,这是如何工作的?
为了澄清,将时区缩写解析成有用的信息会很好as.POSIXct(),但更多的核心问题是如何让函数至少忽略时区.
这是我最好的解决方法,但是有一个特定的格式代码可以传递给as.POSIXct()所有时区吗?
times <- c("Fri Jul 03 00:15:00 EDT 2015", "Fri Jul 03 00:15:00 GMT 2015")
as.POSIXct(times, format="%a %b %d %H:%M:%S %Z %Y") # nope! strptime can't handle %Z in input
formats <- paste("%a %b %d %H:%M:%S", gsub(".+ ([A-Z]{3}) [0-9]{4}$", "\\1", times),"%Y")
as.POSIXct(times, format=formats) # works
Run Code Online (Sandbox Code Playgroud)
编辑:这是最后一行的输出,以及它的类(来自单独的调用); 输出符合预期.从控制台:
> as.POSIXct(times, format=formats)
[1] "2015-07-03 00:15:00 EDT" "2015-07-03 00:15:00 EDT"
> attributes(as.POSIXct(times, format=formats))
$class
[1] "POSIXct" "POSIXt"
$tzone
[1] ""
Run Code Online (Sandbox Code Playgroud) 我试图在facet中使用ggplot来绘制数据的分布/密度.这是我现在所拥有的,其中红线显示平均值,每个方面显示平均值.现在,平均值没有意义,我希望有类似的绘图,其中密度的峰值用xintercept和文本显示.
我用于手段的代码是这样的:
data <- read.table("sample.csv", header=F, sep=',')
colnames(data) <- c("frame", "val")
attach(data)
library(ggplot2)
library(grid)
library(plyr)
xdat <- ddply(data,"frame", transform, val_mean = signif(mean(val),3), med.x = signif(mean(val),3), med.y=signif(mean(density(val)$y),3))
ppi <- 500
png("sample.png", width=4*ppi, height=4*ppi, res=ppi)
hp <-ggplot(data=data, aes(x=val))+
geom_density() +
geom_vline(aes(xintercept=val_mean),xdat, color="red",linetype="dashed",size=1) +
theme_bw()
hp<-hp + facet_wrap (~ frame, ncol=2, scales="free_y") +
geom_text(data = xdat, aes(x=med.x,y=med.y,label=val_mean))
print(hp)
dev.off()
Run Code Online (Sandbox Code Playgroud)
并且用于绘制该图的数据是:
data <- data.frame(
"frame"=c(rep("A",9), rep("B", 13), rep("C", 7)),
"val"=c(1, rep(2,4), 4, 5, 6, rep(1,6), 2, rep(3,7), 1, rep(4,6))
)
Run Code Online (Sandbox Code Playgroud)
我知道有一些帖子用R来查找值中的峰值.但我希望在密度上绘制峰值,我无法找到任何解决方案(或者我可能错过了它).是否有可能在R中即时计算峰值并在不同方面进行绘图?非常感谢您的时间和帮助!!
这个问题是关于确定数字序列中最大值的数量和位置的算法。因此,这个问题有统计的味道,但它更倾向于编程,因为我对具体的统计属性不感兴趣,并且解决方案需要在R中。使用统计来回答这个问题是可以的,但不是要求。
我想提取时间序列数据(即数字的有序序列)中的最大周期。此类数据的一个示例是太阳耀斑时间序列(~11 年周期,9 至 14 年之间)。循环不会以完美的间隔重复,并且峰值并不总是相同的高度。
我发现最近有一篇论文描述了这种算法,该论文实际上使用了太阳耀斑作为示例(图 5,Scholkmann 等人,2012 年,算法)。我希望这个算法或同样有效的算法可以作为 R 包提供。
链接到 Scholkmann 论文“基于自动多尺度的峰值检测” http://www.mdpi.com/1999-4893/5/4/588
我已经尝试过“pastecs”包中的“转折点”功能,但它似乎太敏感(即检测到太多峰值)。我想首先尝试平滑时间序列,但我不确定这是否是最好的方法(我不是专家)。
感谢您的指点。
我经常需要将(长)字符串转换为 R 中的日期类。我注意到这一步似乎很慢。
例子:
date <- c("5/31/2013 23:30", "5/31/2013 23:35", "5/31/2013 23:40", "5/31/2013 23:45", "5/31/2013 23:50", "5/31/2013 23:55")
Date <- as.POSIXct(date, format="%m/%d/%Y %H:%M")
Run Code Online (Sandbox Code Playgroud)
这不是一个大问题,但我想知道我是否忽略了提高效率的简单途径。有什么提示可以加快速度吗?谢谢。
有没有办法在不更改文件的情况下将文件重新上传到 GitHub?该文件是一个 .zip,我想知道它是否是一个损坏的文件;再说一次,如果没有差异,那么也许它完全相同。
1) 有没有办法重新上传文件,即使您没有更改它(即没有更改推送)。
2)在我描述的场景中,尝试是否有意义?
r ×12
ftp ×2
plot ×2
cat ×1
class ×1
cycle ×1
data.table ×1
date ×1
detection ×1
download ×1
facet ×1
file-upload ×1
filezilla ×1
ggplot2 ×1
git ×1
github ×1
heatmap ×1
knitr ×1
lapply ×1
latex ×1
matlab ×1
opacity ×1
performance ×1
posix ×1
posixct ×1
r-markdown ×1
rcurl ×1
regex ×1
strptime ×1
subset ×1
time-series ×1
timezone ×1