小编rba*_*att的帖子

R Scatter Plot:符号颜色表示重叠点的数量

当许多点重叠时,散点图很难解释,因为这种重叠会掩盖特定区域中的数据密度.一种解决方案是对绘制点使用半透明颜色,以便不透明区域表示在这些坐标中存在许多观察.

下面是我在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的一小部分:

Flombaum等人的图1. 2013年,PNAS

如何在R中创建一个散点图,使用颜色而不是不透明度作为点密度的指标?

对于初学者,R用户可以install.packages("fields")使用该功能在库中访问此Matlab配色方案tim.colors().

是否有一种简单的方法可以制作出类似于上述文章图1的数字,但是在R?谢谢!

matlab plot r opacity heatmap

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

将任意类的列转换为另一个data.table中的匹配列的类

题:

我在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)

r class data.table

13
推荐指数
2
解决办法
1174
查看次数

使用RCurl(或任何其他方法)从FTP下载.RData和.csv文件

我已经将.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)

ftp r download rcurl

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

由多个条件子集

也许这是基本的东西,但我找不到答案.
我有

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中做到这一点?

r subset

7
推荐指数
1
解决办法
1371
查看次数

Rmarkdown图像跳过文本

我正在整理带有以下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..........

![Caption](path/image.png)

Paragraph 2....
Run Code Online (Sandbox Code Playgroud)

并且在渲染文档时,图像在文本中,在Paragraph 1和之间显示为预期的Paragraph 2.但是,我得到一些不可预知的结果,Paragraph 2在某些情况下渲染的图像出现后,我无法解决它.

latex r knitr r-markdown

6
推荐指数
2
解决办法
3247
查看次数

使用R保存图像和.csv,我可以使用R将它们上传到网站(使用filezilla手动完成)吗?

首先,我应该说很多这都是我的头脑,所以我提前道歉使用了不正确的术语,可能会提出一个不明确的问题.我正尽最大能力.

另外,我看到了ThisPost ; 是RCurl我想用此任务的工具?

每隔4个月,我将分析新数据,并生成需要上传到网站的.csv文件和.png文件,以便其他团队成员进行检查.我(几乎)自动化了所有数据收集,数据下载,分析和文件保存.分析在R中执行,R保存文件.目前我使用Filezilla手动将新文件上传到网站.有没有办法使用R将文件上传到网站,这样我就不必打开Filezilla并拖放文件了?

运行我的R代码然后离开是很好的,知道一旦它完成运行,新保存的文件将自动放在网站上.

谢谢你的帮助!

ftp filezilla file-upload r

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

将字符串分成2个字符的组,在R中用冒号(1330到13:30)分隔

我怎么"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)

regex r

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

将R控制台输出中显示的列表写入文本文件

我有一个问题,将列表写入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)

并得到了同样的错误.

r cat lapply

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

如何在R中为3个字母tz指定POSIX(时间)格式,以便忽略它?

对于输出,规格是%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)

timezone posix r strptime

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

使用R在整个刻面上显示密度的主峰

我试图在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中即时计算峰值并在不同方面进行绘图?非常感谢您的时间和帮助!!

plot r facet ggplot2 probability-density

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

检测噪声时间序列中的周期最大值(峰值)(在 R 中?)

这个问题是关于确定数字序列中最大值的数量和位置的算法。因此,这个问题有统计的味道,但它更倾向于编程,因为我对具体的统计属性不感兴趣,并且解决方案需要在R中。使用统计来回答这个问题是可以的,但不是要求。

我想提取时间序列数据(即数字的有序序列)中的最大周期。此类数据的一个示例是太阳耀斑时间序列(~11 年周期,9 至 14 年之间)。循环不会以完美的间隔重复,并且峰值并不总是相同的高度。

我发现最近有一篇论文描述了这种算法,该论文实际上使用了太阳耀斑作为示例(图 5,Scholkmann 等人,2012 年,算法)。我希望这个算法或同样有效的算法可以作为 R 包提供。

链接到 Scholkmann 论文“基于自动多尺度的峰值检测” http://www.mdpi.com/1999-4893/5/4/588

我已经尝试过“pastecs”包中的“转折点”功能,但它似乎太敏感(即检测到太多峰值)。我想首先尝试平滑时间序列,但我不确定这是否是最好的方法(我不是专家)。

感谢您的指点。

r time-series cycle detection

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

R中更快的日期格式?

我经常需要将(长)字符串转换为 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)

这不是一个大问题,但我想知道我是否忽略了提高效率的简单途径。有什么提示可以加快速度吗?谢谢。

performance r date posixct

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

将文件重新上传到 GitHub,没有任何变化?这甚至有意义吗?

有没有办法在不更改文件的情况下将文件重新上传到 GitHub?该文件是一个 .zip,我想知道它是否是一个损坏的文件;再说一次,如果没有差异,那么也许它完全相同。

1) 有没有办法重新上传文件,即使您没有更改它(即没有更改推送)。

2)在我描述的场景中,尝试是否有意义?

git github

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