小编Ras*_*åth的帖子

R有任何正式的命名约定吗?

大多数编程语言都有函数,参数,类等的官方命名约定.这里的官方意味着约定由语言背后的组织发布.

R有任何正式的命名约定吗?

我知道之前在stackoverflow上已经讨论命名约定和R ,但那是一段时间以前我的问题不是"你喜欢什么命名约定?" 而是关注是否存在官方命名约定.

r

29
推荐指数
3
解决办法
6611
查看次数

如何找到覆盖R中一组点的给定部分的最小椭圆?

我想知道:是否有一些功能/巧妙的方法来找到覆盖R中一组2d点的给定部分的最小椭圆?随着最小的我的意思是面积最小的椭圆形.

澄清:如果点数很大,我可以使用近似正确的解决方案(因为我猜一个确切的解决方案必须尝试点的子集的所有组合)

这个问题可能听起来像是包含R中给定点百分比的椭圆问题的副本,但问题的表达形式是得到的答案不会产生最小的椭圆.例如,使用给予Ellipse的解决方案,其中包含R中给定点的百分比:

require(car)
x <- runif(6)
y <- runif(6)
dataEllipse(x,y, levels=0.5)
Run Code Online (Sandbox Code Playgroud)

得到的椭圆显然不是包含一半点的最小椭圆,我猜,这是一个覆盖左上角三个点的小椭圆.

在此输入图像描述

r ellipse minimum

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

将非S3基本功能重新定义为R包中的S3功能是不好的风格?

所以我正在使用一个使用S3类的R包,如果我可以将其sample作为我的一个类的方法使用,那将是非常好的.但是,base已经声明sample为非S3函数,所以我想知道的是:

重新定义非S3 base功能(例如S3 功能)是不好的风格sample?这可能会让我的包裹用户感到困惑吗?

您可以重新定义sample并保持base功能正常工作的方法是:

sample.default <- base::sample
sample <- function(x, ...) {
  UseMethod("sample")
}
# This allows me to define a new sample method for my_special_class
sample.my_special_class <- function(...) {...}
Run Code Online (Sandbox Code Playgroud)

但我不确定的是,这是否会导致任何问题或命名空间问题,例如,在加载其他包时.我也注意到没有多少包重新定义sample,例如,dplyr使用sample_n和igraph使用sample_,我认为可能有一些原因...

oop r

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

使用 Shiny 时如何检索客户端的当前时间和时区?

我想知道是否有一些聪明的方法可以让客户端获取当前时间和时区,以便在server.RShiny 应用程序的一部分中使用它。如果没有,那么最简单的方法是什么?

timezone r shiny

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

如何通过增加 spark 的内存来解决 pyspark `org.apache.arrow.vector.util.OversizedAllocationException` 错误?

我正在运行一项工作pyspark,我曾在其中使用分组聚合 Pandas UDF。这会导致以下(此处为缩写)错误:

org.apache.arrow.vector.util.OversizedAllocationException: Unable to expand the buffer
Run Code Online (Sandbox Code Playgroud)

我相当确定这是因为 Pandas UDF 接收的组之一很大,如果我减少数据集并删除足够的行,我可以毫无问题地运行我的 UDF。但是,我想使用我的原始数据集运行,即使我在具有 192.0 GiB RAM 的机器上运行此 spark 作业,我仍然会遇到相同的错误。(并且 192.0 GiB 应该足以将整个数据集保存在内存中。)

我怎样才能给 spark 足够的内存来运行需要大量内存的分组聚合 Pandas UDF?

例如,是否有一些我错过的火花配置可以为 apache 箭头提供更多内存?

更长的错误信息

---------------------------------------------------------------------------
Py4JJavaError                             Traceback (most recent call last)
 in 
----> 1 device_attack_result.count()
      2 
      3 
      4 

/usr/lib/spark/python/pyspark/sql/dataframe.py in count(self)
    520         2
    521         """
--> 522         return int(self._jdf.count())
    523 
    524     @ignore_unicode_prefix

/usr/lib/spark/python/lib/py4j-0.10.7-src.zip/py4j/java_gateway.py in __call__(self, *args)
   1255         answer = self.gateway_client.send_command(command)
   1256         return_value = get_return_value(
-> 1257             answer, self.gateway_client, …
Run Code Online (Sandbox Code Playgroud)

user-defined-functions apache-spark pyspark apache-arrow

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

如何格式化R中的数字,指定有效位数但保留重要的零和整数部分?

我一直在努力使用我觉得非常明智的规则来格式化R中的数字.我想要的是指定一些有效数字(比如3),保持显着的零,并保持小数点前的所有数字,一些例子(有3位有效数字):

1.23456 -> "1.23"
12.3456 -> "12.3"
123.456 -> "123"
1234.56 -> "1235"
12345.6 -> "12346"
1.50000 -> "1.50"
1.49999 -> "1.50"
Run Code Online (Sandbox Code Playgroud)

R中是否有一个函数可以进行这种格式化?如果没有,怎么办呢?

我觉得这些是非常合理的格式化规则,但我还没有设法在R中找到以这种方式格式化的函数.据我搜索,这不是许多类似问题的重复,例如这个

编辑:

受到两个好答案的启发,我自己编写了一个函数,我相信它适用于所有情况:

sign_digits <- function(x,d){
  s <- format(x,digits=d)
  if(grepl("\\.", s) && ! grepl("e", s)) {
    n_sign_digits <- nchar(s) - 
      max( grepl("\\.", s), attr(regexpr("(^[-0.]*)", s), "match.length") )
    n_zeros <- max(0, d - n_sign_digits)
    s <- paste(s, paste(rep("0", n_zeros), collapse=""), sep="")
  }
  s
}
Run Code Online (Sandbox Code Playgroud)

formatting r number-formatting

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