javascript

java

python

c#

android

node.js

c++

reactjs

php

html

jquery

css

.net

ios

git

ruby-on-rails

sql

c

string

ruby

并行处理-R中doMC和doParallel之间的区别

R中的registerDoParallel(ncores=3)stopCluster(cl)之间的multicore函数有什么区别? snow支持类似Unix的窗口,而doParallel仅支持类似Unix的窗口。 换句话说,为什么doParallel无法直接替换doMC? 谢谢。

更新:registerDoParallel(ncores=3)建立在stopCluster(cl)(它实际上是multicoresnow的合并)上,并自动为您的系统使用适当的工具。 结果,我们可以使用doParallel支持多系统。 换句话说,我们可以使用doParallel替换doMC

参考:[http://michaeljkoontz.weebly.com/uploads/1/9/9/4/19940979/parallel.pdf]

顺便说一句,registerDoParallel(ncores=3)和之间有什么区别

cl <- makeCluster(3)
registerDoParallel(cl)

似乎registerDoParallel(ncores=3)可以自动停止群集,而第二个不能自动停止,需要stopCluster(cl)

参考:[http://cran.r-project.org/web/packages/doParallel/vignettes/gettingstartedParallel.pdf]

trans by 2020-02-23T00:56:16Z

r-使用ggp绘图时如何抑制警告

当将缺失值传递给ggplot时,这非常好,并警告我们它们存在。 在交互式会话中,这是可以接受的,但是在编写报告时,您不会使输出杂乱无章,尤其是其中有很多警告时。 下面的示例缺少一个标签,该标签会产生警告。

library(ggplot2)
library(reshape2)
mydf <- data.frame(
  species = sample(c("A", "B"), 100, replace = TRUE), 
  lvl = factor(sample(1:3, 100, replace = TRUE))
)
labs <- melt(with(mydf, table(species, lvl)))
names(labs) <- c("species", "lvl", "value")
labs[3, "value"] <- NA
ggplot(mydf, aes(x = species)) + 
   stat_bin() + 
   geom_text(data = labs, aes(x = species, y = value, label = value, vjust = -0.5)) +
   facet_wrap(~ lvl)

enter image description here

如果我们将suppressWarnings包裹在最后一个表达式的周围,则会得到有关有多少个警告的摘要。 为了争辩,我们说这是不可接受的(但确实非常诚实和正确)。 打印ggplot2对象时如何(完全)禁止显示警告?

trans by 2020-02-22T11:36:14Z

打印-如何在R中打印到stderr?

R中如何打印到Rscript

这对于以Rscript编写的脚本特别有用。

trans by 2020-02-22T09:45:03Z

错误:XML内容似乎不是XML。 R 3.1.0

我正在尝试获取此XML文件,但无法。 我在同一主题中检查了其他解决方案,但我听不懂。 我是R新手。

> library(XML)
> fileURL <- "https://d396qusza40orc.cloudfront.net/getdata%2Fdata%2Frestaurants.xml"
> doc <- xmlTreeParse(fileURL,useInternal=TRUE)

错误:XML内容似乎不是XML:'[[https://d396qusza40orc.cloudfront.net/getdata%2Fdata%2Frestaurants.xml']

你能帮忙吗?

trans by 2020-02-22T02:54:38Z

r-两个向量的欧几里得距离

如何找到两个向量的欧几里得距离:

x1 <- rnorm(30)
x2 <- rnorm(30)
trans by 2020-02-21T22:59:17Z

如何在R中删除目录?

经过一番研究,我发现以下工作原理:

unlink("mydir")

并且您必须使用options(warn=1)选项,以防您要递归删除:

unlink("mydir", recursive=TRUE)

但是,我注意到只有options(warn=1)(不带recursive选项)在mydir包含子目录时不会产生任何输出:它不会删除目录,但不会显示任何警告。 没什么:

> list.dirs()
[1] "."          "./r"
> dir.create("test")
> dir.create("test/test2")
> list.dirs()
[1] "."            "./r"   "./test"       "./test/test2"
> unlink("test")          ######### here I would expect a warning #########
> list.dirs()
[1] "."            "./r"   "./test"       "./test/test2"
> unlink("test", recursive=TRUE)
> list.dirs()
[1] "."          "./r"

有没有什么方法可以得到任何“通知”,就像您在UNIX系统中得到的那样?

$ rmdir test
rmdir: failed to remove «test»: Directory not empty

我正在使用R版本3.1.2(2014-10-31)。 我尝试玩options(warn=1)等,但没有运气。

trans by 2020-02-21T20:53:04Z

r-将多个对齐的图放置到一页中时避免浪费空间

我想在一个页面上放置四个图。 轴标签应仅在边缘处打印,即x轴标签仅用于底部图,y轴标签仅用于左侧图。 这既适用于整个轴的名称,也适用于各个刻度线。 我可以使用以下代码沿这些方式生成一些东西:

pdf(file = "ExampleOutput.pdf",
    width = 6.61,
    height = 6.61,
    pointsize = 10
    )
set.seed(42)
catA <- factor(c("m100", "m500", "m1000", "m2000", "m3000", "m5000"))
catB <- factor(20:28)
samples <- 100
rsample <- function(v) v[ceiling(runif(samples, max=length(v)))]
Tab <- data.frame(catA = rsample(catA),
                  catB = rsample(catB),
                  valA = rnorm(samples, 150, 8),
                  valB = pmin(1,pmax(0,rnorm(samples, 0.5, 0.3))))
par(mfrow = c(2,2))
for (i in 0:3) {
  x <- Tab[[1 + i %% 2]]
  plot(x, Tab[[3 + i %/% 2]],
       xlab = if (i %/% 2 == 1) "Some Categories" else NULL,
       ylab = if (i %% 2 == 0) "Some Values" else NULL,
       axes = FALSE
       )
  axis(side = 1,
       at=1:nlevels(x),
       labels = if (i %/% 2 == 1) levels(x) else FALSE)
  axis(side = 2, labels = (i %% 2 == 0))
  box(which = "plot", bty = "l")
}
par(mfrow = c(1,1))
dev.off()

我欢迎您提出有关如何改善绘图命令的建议,也许避免手动在左下角绘制轴和L。 但这只是一个补充。

该序列的结果如下所示:

Current output

这里的问题是大量浪费的空白。 我的印象是,即使不使用R和R标记,它们也会保留空间。 由于空间的浪费,对于左下图,实际上仅每秒钟x刻度被标记一次,这在这里确实很糟糕。

我想生成一个没有太多空白的类似图。 实际图的大小应相同,以便它们正确对齐,但标签的空间应仅在外部。 我想象这样的布局(在GIMP中创建的模型):

Desired output

如何实现这种布局?

trans by 2020-02-21T00:09:17Z

R中包中的全局变量

我正在R中开发一个程序包。我有很多函数,其中一些需要一些全局变量。 如何管理包中的全局变量?

我已经阅读了一些有关环境的内容,但我不了解它的工作方式,即使这只是解决问题的方法。

trans by 2020-02-20T05:35:05Z

r-从Rdata fi获取特定对象

我有一个包含各种对象的load('New.Rdata')文件:

 New.Rdata
  |_ Object 1  (e.g. data.frame)
  |_ Object 2  (e.g. matrix)
  |_...
  |_ Object n

当然,我可以使用load('New.Rdata')加载数据帧,但是,是否有一种聪明的方法可以从该文件中仅加载一个特定对象,而丢弃其他对象?

trans by 2020-02-20T04:41:25Z

newline-如何在R控制台中输出文本而不创建新行?

我想在长时间运行的算法中输出进度指示器。 我可以轻松地从算法中“完善”进度值(例如,通过为此目的专门调用提供的函数回调),但是困难在于实际的文本输出过程。 每次致电print都会创建一个新行,并以[1]为前缀。

有没有办法在不同的时间打印而不引入换行符?

具体来说,如果要在两个不同的时间观察,我希望实现一种类似于以下内容的“动画”。

0%...

...

0%...2%...4%...
trans by 2020-02-20T00:21:19Z

如何在R中处理hdf5文件?

我有rhdf5格式的文件。 我知道它应该是一个矩阵,但是我想在hdf5中阅读该矩阵,以便研究它。 我看到有h5r软件包可以帮助您解决此问题,但是我看不到任何易于阅读/理解的教程。 这样的教程可以在线获得吗? 具体而言,如何使用此包读取hdf5对象,以及如何实际提取矩阵?

更新

我发现了一个包rhdf5,它不是CRAN的一部分,而是BioConductoR的一部分。 该界面相对容易理解文档,并且示例代码非常清晰。 我可以毫无问题地使用它。 我的问题似乎是输入文件。 我要读取的矩阵实际上是以2755154532735910910912的形式存储在hdf5文件中的。因此,每次我尝试打开它并通过R对其进行访问时,我都得到了segmentation faulttsv文件,现在该问题已解决。

trans by 2020-02-20T00:15:22Z

r-使用tm_map(...,tolower)将文本转换为小写时出错

我尝试使用tm_map。它给出了以下错误。 我该如何解决?

 require(tm)
 byword<-tm_map(byword, tolower)

Error in UseMethod("tm_map", x) : 
  no applicable method for 'tm_map' applied to an object of class "character"
trans by 2020-02-19T13:18:28Z

转义-在R中有效地将反斜杠转换为正斜杠

我正在寻找一种将R中的反斜杠转换为正斜杠的有效方法。有时我从Windows复制目录的链接,然后得到如下所示的内容:

C:/Users/jd/Documents/folder/file.txt

如何快速将其更改为C:/Users/jd/Documents/folder/file.txt? 我什至无法将以上表达式理解为字符。 引发错误

“ \ u在字符串以”“ C:\ u”开头的字符串中不使用十六进制数字。

我知道R中的TAB函数有助于快速找到位置,但是只是想知道是否还有其他解决方法。 我也可以将工作目录更改为文件夹的位置。 我只是在玩耍,试图将反斜杠转换为正斜杠,并没有直截了当,所以仅仅出于好奇就问了这个。

trans by 2020-02-19T02:30:04Z

将dat文件导入R

为简化此问题,我们事先表示歉意。 我正在尝试使用以下代码从网站将.dat文件导入R:

www = "http://www.nilu.no/projects/ccc/onlinedata/ozone/CZ03_2009.dat"
data <- read.delim(www, header = TRUE, sep="\t") 

我想访问data.frame的Value部分,但是,我不确定data.frame的尺寸,如果我键入ncol(data),它将返回1,这是我期望的3。 如何访问此data.frame的“第三”列?

trans by 2020-02-19T00:53:21Z

r-ggplot2:调整图例中的符号大小

如何更改图例中符号的大小? 我检查了theme的文档,但没有找到答案。

这是一个例子:

library(ggplot2);library(grid)
set.seed(1000)
x <- 1:6
mu <- sin(x)
observed <- mu + rnorm(length(x), 0, 0.5*sd(mu))
data <- data.frame(
  t=rep(x, 2), 
  value=c(mu, observed) - min(mu, observed) + 0.5, 
  class = rep(c("mu", "observed"), each=length(x)))
mu <- data$value[1:length(x)]
observed <- data$value[1:length(x) + length(x)]
mu.min <- mu - 3 * 0.5 * sd(mu)
mu.max <- mu + 3 * 0.5 * sd(mu)
g <- ggplot(data=data)
g <- g + geom_point(aes(x=value, y=t, shape=class, size=24)) + scale_size(guide="none")
g <- g + scale_shape(name="", labels=expression(paste(S[u](t), ", the observation at time ", t), paste(mu[u](t), ", the mean of ", tilde(S)[u](t), "          ")))
stat_function.color <- gray(0.5)
g <- g + geom_segment(aes(y=1:6, yend=1:6, x=mu.min, xend=mu.max, linetype="2", alpha = 1), color=stat_function.color) + scale_alpha(guide="none") + scale_linetype(name= "", labels=expression(paste("probability density function (pdf) of ", tilde(S)[u], " at time ", t)))
for(i in 1:length(x)) {
  g <- g + stat_function(fun=function(x, i) {
    ifelse( x <= mu.max[i] & x >= mu.min[i], dnorm(x, mu[i], sd(mu)) + i, NA)
    }, color=stat_function.color, args=list(i=i))
}
background.color <- gray(0.75)
g <- g + theme(
  axis.text=element_blank(),
  title=element_text(size=rel(1.5)),
  legend.text=element_text(size=rel(1.5)),
  legend.position="top",
  legend.direction="vertical",
#   legend.key.size = unit(2, "cm"),
  panel.background=element_rect(fill=background.color), 
  panel.grid.major=element_line(color=background.color),
  panel.grid.minor=element_line(color=background.color)
  ) + coord_flip()
plot(g)
trans by 2020-02-18T23:30:34Z

r-当df还包含字符串时,将data.frame转换为数字矩阵的正确方法是什么?

我有一个从.csv文件中提取的数据框,该文件包含数字和字符值。 我想将此数据帧转换为矩阵。 所有包含的信息都是数字(我删除的非数字行),因此应该有可能将数据框转换为数字矩阵。 但是,我确实得到了一个字符矩阵。

我发现解决此问题的唯一方法是对每一行使用as.numeric,但这非常耗时。 我很确定有某种方法可以处理某种if(i in 1:n)格式的文件,但是我无法弄清楚它是如何工作的。 还是真的像这样在这里以数字值开头的唯一方法(对矩阵进行数字和名称排序)?

对你们大多数人来说,这可能是一件很容易的事情:P

矩阵要大得多,这只是前几行...下面是代码:

cbind(
as.numeric(SFI.Matrix[ ,1]),
as.numeric(SFI.Matrix[ ,2]),
as.numeric(SFI.Matrix[ ,3]),
as.numeric(SFI.Matrix[ ,4]),
as.numeric(SFI.Matrix[ ,5]),
as.numeric(SFI.Matrix[ ,6]))  

# to get something like this again:

Social.Assistance Danger.Poverty GINI S80S20 Low.Edu        Unemployment 
0.147             0.125          0.34    5.5   0.149        0.135 0.18683691
0.258             0.229          0.27    3.8   0.211        0.175 0.22329362
0.207             0.119          0.22    3.1   0.139        0.163 0.07170422
0.219             0.166          0.25    3.6   0.114        0.163 0.03638525
0.278             0.218          0.29    4.1   0.270        0.198 0.27407825
0.288             0.204          0.26    3.6   0.303        0.211 0.22372633

感谢您的任何帮助!

trans by 2020-02-18T22:46:05Z

如何清理R内存(无需重新启动PC)?

我正在R(在Windows下)运行代码,该代码涉及大量内存数据。 我尝试使用rm(list=ls())清理内存,但似乎内存仍被占用,无法重新运行代码。 我试图关闭R并再次重新启动R,但是相同,似乎内存仍然被占用,因为当我运行代码时它说它无法分配内存(但是第一次可以)。 重新启动PC后,似乎只能清除内存。

有什么方法可以清理内存,以便我可以重新运行代码而无需每次都重新启动PC?

trans by 2020-02-18T22:05:25Z

r-应用group_by并汇总数据,同时保留所有列的位置

我有一个包含22000行和25列的大型数据集。 我正在尝试根据其中一列对数据集进行分组,并根据已分组的数据集获取另一列的最小值。 但是,问题在于它只给了我两列,分别包含分组列和具有最小值的列...但是我需要与具有最小值的行相关的其他列的所有信息。这是一个简单的示例,只是为了使其可重现:

    data<- data.frame(a=1:10, b=c("a","a","a","b","b","c","c","d","d","d"), c=c(1.2, 2.2, 2.4, 1.7, 2.7, 3.1, 3.2, 4.2, 3.3, 2.2), d= c("small", "med", "larg", "larg", "larg", "med", "small", "small", "small", "med"))

    d<- data %>%
    group_by(b) %>%
    summarise(min_values= min(c))
    d
    b min_values
    1 a        1.2
    2 b        1.7
    3 c        3.1
    4 d        2.2

因此,我还需要具有与列a和d有关的信息,但是,由于在c列中的值存在重复,因此无法基于min_value列合并它们...我想知道是否有任何方法可以保留 使用dplyr软件包时其他列的信息。

我在“ dplyr:group_by,子集和汇总”和“在使用group_by和汇总的子组中找到百分比”的地方找到了一些解释,但是都没有解决我的问题。

trans by 2020-02-18T21:29:08Z

r-更快的加权采样,无需更换

这个问题导致了一个新的R包:random.c

R的默认采样而不使用random.c进行替换似乎需要二次运行时间,例如 使用从均匀分布得出的权重时。 对于大样本量,这很慢。 有人知道R中可以使用的更快的实现吗? 两个选项是“带替换的拒绝采样”(请参阅stats.sx上的此问题)和Wong和Easton(1980)的算法(在StackOverflow答案中使用Python实现)。

感谢Ben Bolker提示了C函数,该函数在使用replace=F和非均匀权重调用2375476319261492225调用random.c时在内部调用了该代码。的确,该代码显示了两个嵌套的for循环(random.c)的第420 ff行)。

以下是根据经验分析运行时间的代码:

library(plyr)

sample.int.test <- function(n, p) {
    sample.int(2 * n, n, replace=F, prob=p); NULL }

times <- ldply(
  1:7,
  function(i) {
    n <- 1024 * (2 ** i)
    p <- runif(2 * n)
    data.frame(
      n=n,
      user=system.time(sample.int.test(n, p), gcFirst=T)['user.self'])
  },
  .progress='text'
)

times

library(ggplot2)
ggplot(times, aes(x=n, y=user/n)) + geom_point() + scale_x_log10() +
  ylab('Time per unit (s)')

# Output:
       n   user
1   2048  0.008
2   4096  0.028
3   8192  0.100
4  16384  0.408
5  32768  1.645
6  65536  6.604
7 131072 26.558

Plot

编辑:感谢Arun指出未加权采样似乎没有这种性能损失。

trans by 2020-02-18T20:28:21Z

64位-如何知道R是在64位还是32位上运行?

我的版本输出是:

> version
               _                            
platform       x86_64-w64-mingw32           
arch           x86_64                       
os             mingw32                      
system         x86_64, mingw32              
status                                      
major          2                            
minor          15.2                         
year           2012                         
month          10                           
day            26                           
svn rev        61015                        
language       R                            
version.string R version 2.15.2 (2012-10-26)
nickname       Trick or Treat    

os是mingw32。 这是否意味着我只使用32位? 我该如何改变?

trans by 2020-02-18T18:28:10Z

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 下一页 共42页