小编sea*_*ody的帖子

更新现有的Rdata文件

我发现自己处于需要更新之前使用的Rdata文件中的一个或两个数据对象的位置save.如果我不小心加载文件,我可能会忘记在文件中重新保存一些对象.作为一个例子,我正在处理一个存储有一些对象的包sysdata.rda(用于内部使用的查找表,我不想导出),只想担心更新单个对象.

如果有一种标准的方法可以做到这一点,我还没有成功,所以创建了我自己的功能.

resave <- function (..., list = character(), file = stop("'file' must be specified")) {
  # create a staging environment to load the existing R objects
  stage <- new.env()
  load(file, envir=stage)
  # get the list of objects to be "resaved"
  names <- as.character(substitute(list(...)))[-1L]
  list <- c(list, names)
  # copy the objects to the staging environment
  lapply(list, function(obj) assign(obj, get(obj), stage))
  # save everything in the staging environment
  save(list=ls(stage, all.names=TRUE), file=file)
}
Run Code Online (Sandbox Code Playgroud)

虽然看起来有点矫枉过正.有没有更好/更简单的方法来做到这一点?

顺便说一下,我是否正确地假设在函数调用之后在函数范围内创建的新环境被销毁?

r rdata

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

面对自由尺度,但保持纵横比固定

我正在使用ggplot绘制分面地图,并且无法弄清楚如何在每个方面允许"自由"比例(以便小区域看起来不会太小)同时保持xy宽高比固定.

这是一个简化的例子:

require(maps)
require(ggplot2)

map_nz <- subset(fortify(map_data('nz')),
                 region %in% c("South.Island ", "North.Island "))
gg_nz <- qplot(long, lat, data=map_nz, geom="polygon", group=group)
Run Code Online (Sandbox Code Playgroud)

我现在有一个新西兰北岛和南岛的情节.我可以面对这个并以固定的宽高比显示它,如下所示:

gg_nz + coord_fixed() + facet_wrap(~region)
Run Code Online (Sandbox Code Playgroud)

结果看起来像这样:

新西兰地图 - 固定纵横比

请注意,北岛小平面浪费了相当多的空间.我希望它占用更多的可用空间.我可以像这样释放比例尺:

gg_nz + facet_wrap(~region, scales="free")
Run Code Online (Sandbox Code Playgroud)

结果如下:

新西兰地图 - 免费比例

问题是每个方面的xy纵横比不再是1:1.我很高兴每个方面都有不同的规模,但在方面我想保留纵横比.

我尝试了以下但没有成功:

gg_nz + facet_wrap(~region, scales="free") + coord_fixed()
Run Code Online (Sandbox Code Playgroud)

大概是覆盖中的scale参数.有什么建议?facet_wrapcoord_fixed

更新:为了给出一个更具戏剧性的插图,这与美国一些州的情况相同:

固定坐标(使用coord_fixedcoord_equal):

美国地图 - 固定方面 免费坐标(使用scales = free):

美国地图 - 免费比例

这些地图都不是理想的:首先,特拉华州很小.在第二种情况下,纵横比非常扭曲.例如,新泽西州是一个狭窄的国家,拉伸得太宽.

gis r ggplot2

19
推荐指数
3
解决办法
6072
查看次数

如何在R中将double转换为整数?

我的问题是:假设您已经计算出一个算法,该算法给出了迭代次数,并且您希望打印出迭代次数.但输出总是很多小数位,如下所示:

64.00000000
Run Code Online (Sandbox Code Playgroud)

是否可以通过在R中进行类型转换来获取整数?你会怎么做?

r

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

将\ u转义的Unicode字符串转换为ASCII

阅读所有关于后iconvEncoding,我仍然感到困惑.

我正在抓取网页的来源我有一个如下所示的字符串:( 'pretty\u003D\u003Ebig'在R控制台中显示'pretty\\\u003D\\\u003Ebig').我想将其转换为ASCII字符串,应该是'pretty=>big'.

更简单,如果我设置

x <- 'pretty\\u003D\\u003Ebig'
Run Code Online (Sandbox Code Playgroud)

如何进行转换x以获得收益pretty=>big

有什么建议?

unicode text-processing r unicode-string iconv

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

在Roxygen2中导出数据,以便它们可用而不需要数据()

在阅读了诸如关于使用Roxygen记录数据集的SO问题之后,我设法记录了一个数据集(我将其称为cells),它现在出现在生成的列表中,data(package="mypackage")并且如果我运行命令则会加载data(cells).在此之后,cells将在ls()运行时出现.

但是,在许多软件包中,数据可立即使用而无需data()呼叫.此外,ls()运行时不会显示数据名称.一个例子是baseball随附的数据集plyr.我查看了源代码plyr,但我看不出这是怎么做的.

r rd roxygen2

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

优化julia one-liner以使其与python一样快

我在朱莉娅写了一个简单的单线来解决一个小数学问题:找到一个两位数字,A和一个三位数字B,这样他们的产品,A x B是一个五位数字,每个数字从0到9在A,B和A x B中恰好出现一次.例如,

54 x 297 = 16,038
Run Code Online (Sandbox Code Playgroud)

这是我的julia代码,它找到了所有可能的解决方案:

println(filter(l -> length(unique(reduce(vcat, (map(digits, l))))) == 10, [[x, y, x*y] for x in Range(10:99), y in Range(100:999)]))
Run Code Online (Sandbox Code Playgroud)

它解决了这个问题,但后来我在python中试过并提出了这个问题:

print filter(lambda y: len(set(''.join([str(x) for x in y])))==10, [[x, y, x*y] for x in range(10, 99) for y in range(100, 999)])
Run Code Online (Sandbox Code Playgroud)

定时他们两个,我惊讶地发现python代码的运行速度是julia代码的两倍多.有关更快速处理julia代码的任何建议(最好将其保留为单行代码)?

旁白:我知道我可以与范围的快速的调整来改进 range(12, 98) range(102, 987).

更新

超越单行,我已经采纳了循环可以比列表更快的建议,因此我比较了以下备选方案:

朱莉娅

ans = Array{Tuple{Int32, Int32, Int32}}(0)
for x in 12:98 
  for y in 102:987
    if length(unique(digits(x+y*100+x*y*100_000)))==10 push!(ans, (x, y, x*y) …
Run Code Online (Sandbox Code Playgroud)

python julia

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

独立旋转矩阵列的更好方法

作为我学习 j 之旅的一部分,我实现了一种计算多边形面积的技术,我在Futility Closet 中遇到过。我想出了一个解决方案,但它很不雅,所以我对更好的方法很感兴趣:

   polyarea =: -:@((+/@((1&{&|:)*(0{&|:1&|.)))-(+/@((0&{&|:)*(1{&|:1&|.))))
   y =: 2 7 9 5 6,.5 7 1 0 4
   polyarea y
20
Run Code Online (Sandbox Code Playgroud)

此技术旋转一列并取各列的点积,然后在旋转另一列后执行相同操作。面积是这两个结果之差的一半。

有兴趣的建议!

j

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

嵌套ifelse语句中未使用的参数错误

我正在制作一个输出星期几的功能,给出自1970年1月1日以来的一些天.当函数是一个if then语句链时,函数工作正常,但我想在向量上使用函数,所以我需要构建这个看起来很愚蠢的ifelse语句链.

不幸的是,我一直收到这个错误:

Error in ifelse(rem == 0, day = "Thursday", ifelse(rem == 1, day = "Friday",  : 
unused argument(s) (day = "Thursday")
Calls: dayFinder -> ifelse
Execution halted
Run Code Online (Sandbox Code Playgroud)

我一直无法弄清楚如何绕过它 - 看起来它只是忽略thenifelse声明的一部分.我已尝试向其提供各种样本数据集或数据点,但无法修复错误.

这是我的代码 - 提前谢谢.

dayFinder <- function(x){
#Assuming that '0' refers to January 1 1970
#Store given number
start <- x
#Initialize variable
day="Halloween"
#Divide x by 7 and store remainder
rem <- x%%7
#Determine the day
ifelse(rem==0, day="Thursday", 
    ifelse (rem==1, …
Run Code Online (Sandbox Code Playgroud)

if-statement r

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

更改尺寸图例的默认颜色

我想知道在使用色标时是否可以更改 ggplot 大小图例的默认(黑色)颜色。

这是一个(人工)可重现的示例:

ggplot(diamonds, aes(x=x, y=price, colour=color, size=depth)) + geom_point()
Run Code Online (Sandbox Code Playgroud)

尺寸(深度)图例的点都是黑色的。如果我不也将颜色用作美学,我可以将所有点设为特定颜色,并且尺寸图例将匹配该颜色。但是,如果颜色是一种美学呢?

有什么建议?

r ggplot2

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

避免数据框的第一列

我有以下数据框,我想将每个值分配给一个 bin,

                                                                                 title
1                                        MotorolaROID RAZR MAXX 4G Android Phone Black 32GBVerizon Wireless.jpg^HTC EVO 4G 1GB White  Sprint  Smartphone.jpg
2 MotorolaROID RAZR MAXX 4G Android Phone Black 32GBVerizon Wireless.jpg^NEW 4 0 Android 2 3 Unlocked Quad Bands GPS Bluetooth Wifi Smart Cell phone G10.jpg
3                 MotorolaROID RAZR MAXX 4G Android Phone Black 32GBVerizon Wireless.jpg^Motorola Droid X2 Verizon BAD ESN GOOD Condition 100 Functional.jpg
4                                      MotorolaROID RAZR MAXX 4G Android Phone Black 32GBVerizon Wireless.jpg^UNLOCKED Huawei Ideos S7 Tablet Smartphone.jpg
5                          MotorolaROID …
Run Code Online (Sandbox Code Playgroud)

r dataframe

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

当我知道有解决方案时,约束报告为“无法满足”(菜鸟错误?)

作为 MiniZinc 的首次用户,我尝试用它来编写一个我已经知道解决方案的逻辑谜题。然而,当我尝试对所有谜题线索进行编码并运行代码时,它会报告回来=====UNSATISFIABLE=====。下面的代码运行,但如果两个注释掉的约束中的任何一个未注释,则找不到解决方案。

\n

我很可能在某个地方犯了错误,但我正在努力寻找它。非常感谢任何帮助!

\n
% Christmas Puzzle 2021\n\ninclude "alldifferent.mzn";\n\n% There are 9 reindeer numbered 1 to 9 and there are 9 different types of food.\n% The reindeer fly on three test flights and are fed one of the foods prior to\n% each test flight.\n\nset of int: REINDEER = 1..9;\nset of int: FOOD = 1..9;\nset of int: FLIGHT = 1..3;\n\n% Each reindeer has a favourite food\n\narray[REINDEER] of var FOOD: favourite;\narray[FLIGHT, REINDEER] of var FOOD: fed;\n\n%%% CLUES %%%\n\n% …
Run Code Online (Sandbox Code Playgroud)

minizinc

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