小编Was*_*abi的帖子

foreach是否在每次迭代时评估数组?

我想创建一个foreach跳过第一个项目.我在其他地方看到,最简单的方法是使用myCollection.Skip(1),但我有一个问题:

MSDN文档.Skip()描述了它"在序列中绕过指定数量的元素然后返回剩余的元素".这是否意味着打电话给

foreach(object i in myCollection.Skip(1))
{ ... }
Run Code Online (Sandbox Code Playgroud)

程序.Skip(1)每次foreach迭代都必须执行吗?或者foreach(有点像switch)不需要多次评估数组?

var _dummy = myCollection.Skip(1)相反,创建一个虚拟对象并迭代它会更有效吗?

c# arrays foreach

36
推荐指数
3
解决办法
5040
查看次数

seq.int 有什么限制?

seq手册页指出以下(重点煤矿):

描述

生成规则序列。seq是具有默认方法的标准泛型。seq.int是一个可以更快但有一些限制的原语。

不过,该页面实际上并没有描述这些限制是什么。这是seq.int那里的所有其他提及:

参数

[...]

length.out所需的序列长度。一个非负数,如果是小数seqseq.int它将被四舍五入。

[...]

细节

[...]

的无名参数的解释seqseq.int不规范,并建议总是在节目命名的参数。

[...]

seq.int是一个内部泛型,它seq根据第一个提供的参数的类(在参数匹配之前)调度“ ”的方法。

seq.intseq_along并且seq_len是原始的。

价值

seq.intseq数字参数的默认方法返回一个类型为“ integer”或“ double”的向量:程序员不应依赖于哪个。

除了说明根据第一个参数的类进行seq.int调度之外seq,我没有看到任何“限制”。

那么,这些限制是什么?

r

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

删除所有重复行,除非有“相似”行

我有以下内容data.table

library(data.table)
dt = data.table(c(1, 1, 1, 2, 2, 2, 2, 3, 4),
                c(4, 4, 4, 5, 5, 6, 7, 4, 5))
   V1 V2
1:  1  4
2:  1  4
3:  1  4
4:  2  5
5:  2  5
6:  2  6
7:  2  7
8:  3  4
9:  4  5
Run Code Online (Sandbox Code Playgroud)

我想研究V2给定的不同值V1。但是,如果V2给定的所有值V1都相同,那我就不会感兴趣,因此我想删除这样的行。

在上面的示例中,前三行完全相同(V1=1V2=4),因此我希望将其删除。

但是,接下来的四行包括两个相同的行,其他具有不同的V2。在这种情况下,我想说明的三个可能的值V2给出V1 = 2(2, 5)(2, …

r data.table

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

是否需要在 NAMESPACE 中声明属性赋值运算符?如何?

我有一个带有foo使用rlang::fn_fmls()和函数的包rlang::fn_fmls()<-

#' @importFrom rlang fn_fmls missing_arg
foo <- function(x) {
  args <- rlang::fn_fmls(x)
  args <- c(args, bar = rlang::missing_arg())
  rlang::fn_fmls(x) <- args

  return(x)
}
Run Code Online (Sandbox Code Playgroud)

使用 roxygen2,我显然需要用 an 来记录这个函数,@importFrom rlang ...以便在我的 NAMESPACE 中声明这些函数。但是,包含fn_flmsthere 是否也处理fn_fmls<-? 还是也需要单独包含?如果是这样,如何?@importFrom rlang fn_fmls<-? "fn_fmls()<-"?

r roxygen2

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

在不同语言中使用R1C1表示法

我已经构建了一个在公式本身中使用R1C1表示法的电子表格.我已经成功地做了所有需要做的事情,而不必求助于宏或VBA(需要不同的文件格式,并且用户在打开文件时"启用宏"等).

唯一的问题是,我现在已经注意到,虽然Excel将其所有功能转换为本地语言(我必须处理英语,葡萄牙语和西班牙语),但它不处理用于R1C1表示法的字符串文字.例如,如果不是因为葡萄牙语R1C1实际上是L1C1,那么用INDIRECT("R[1]C[1]")葡萄牙语翻译INDIRETO("R[1]C[1]")就可以了.

我假设我使用VBA这不会是一个问题,因为VBA没有翻译,我会认为R1C1实际上是R1C1而不管客户端语言.但是有可能在不必诉诸VBA的情况下做到这一点吗?

excel

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

具有变化颜色和文本注释的动画绘图仪表图

我有一个我想要动画的仪表图(按照本教程),图的颜色根据当前值而变化。我还想要一个注释*,它显示仪表的当前值(我不希望在扇区中显示标准值)。

为了记录,我正在尝试使用plotly而不是c3::c3_gauge因为我希望最终将它plotly::subplot()与其他同时动画的情节一起嵌入。

我目前有以下几点:

library(plotly)
library(RColorBrewer)

riskToHex <- function(x) {
  x <- colorRamp(rev(brewer.pal(11, "RdYlBu")))(x / 100)
  rgb <- paste(x[,1], x[,2], x[,3], sep = ",")
  paste0("rgb(", rgb, ")")
}

dd <- data.frame(values = c(90, 60, 20))

dd <- dd %>%
  mutate(colors = riskToHex(dd$values),
         frame = seq.int(nrow(dd)))
dd <- merge(dd, data.frame(values = 200 - dd$values,
                           colors = "white",
                           frame = dd$frame),
            all = TRUE) %>%
  arrange(frame)

plot_ly() %>%
  add_pie(values = dd$values,
          frame = dd$frame,
          rotation …
Run Code Online (Sandbox Code Playgroud)

animation r pie-chart plotly r-plotly

5
推荐指数
0
解决办法
721
查看次数

不等式条件的滚动总和

我正在处理来自多家公司的一些历史财务数据。

我的 data.frames/tables 具有以下形式:

library(data.table)

dt <- data.table(company = rep(1:2, each = 9),
                 period = c(1, 2, 2, 2, 3, 3, 4, 5, 6), # recycled
                 result = c(1, 2, 3, 4, 5, 6, 7, 8, 9), # recycled
                 filingDate = as.Date(c('2000-01-01', # 1 1
                                        '2000-02-01', # 2 2
                                        '2000-02-02', # 2 3
                                        '2000-03-02', # 2 4
                                        '2000-03-01', # 3 5
                                        '2000-03-02', # 3 6
                                        '2000-04-01', # 4 7
                                        '2000-05-01', # 5 8
                                        '2000-06-01', # 6 9
                                        # company 2 …
Run Code Online (Sandbox Code Playgroud)

r sum

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

返回动态的接口方法

如果从.NET 4.0发布版本开始,所有接口方法都从返回对象更改为返回动态,那会不会有任何缺点?

现有代码不必因为它而改变,因为底层类型仍然是相同的,并且它会使稍微冗长的代码.

public class MyClass : IClonable
{
    //...
    public object Clone()
    {
        //...
        return new MyClass(...);
    }
}

MyClass foo = new MyClass(...);
MyClass bar = foo.Clone() as MyClass;
Run Code Online (Sandbox Code Playgroud)

上面代码的详细程度的唯一减少是将foobar的声明更改为var.

现在,如果IClonable.Clone()返回了一个动态,那么底层类(在运行时)仍然是MyClass,但代码会变得稍微冗长:

MyClass foo = new MyClass(...);
MyClass bar = foo.Clone();
Run Code Online (Sandbox Code Playgroud)

这种变化会不会有任何不利因素?

c# interface dynamictype

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

确定动态窗口宽度:满足条件的值的有效滚动计数

我有一个包含两列a和的 data.frame b,在哪里a排序。我想要得到的滚动平均b,其中窗口的范围a - 5,以a(即从当前值a到哪里a - 5是)。

使用不同的窗口宽度执行滚动平均值是微不足道的data.table::frollmean()adaptive = TRUE;“每个单独的观察都有自己对应的滚动窗口宽度”),所以唯一的问题是计算这些窗口宽度。

那么,给定以下 data.frame,如何确定每个均值的窗口大小?

set.seed(42)
x <- data.frame(
    a = sort(runif(10, 0, 10)),
    b = 1:10
)
x
#>           a  b
#> 1  1.346666  1
#> 2  2.861395  2
#> 3  5.190959  3
#> 4  6.417455  4
#> 5  6.569923  5
#> 6  7.050648  6
#> 7  7.365883  7
#> 8  8.304476  8 …
Run Code Online (Sandbox Code Playgroud)

r data.table rolling-computation

4
推荐指数
2
解决办法
161
查看次数

如何让 roxygen2 将反引号解释为代码格式?

编写带有格式的文档的标准方法code是使用\\code{}.

\n

也就是说,#\' @param foo value passed on to \\code{bar()}变成

\n
\n

论据

\n

foo\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0值传递给bar()

\n
\n

但是,我见过一些包(即dplyr)使用反引号而不是\\code{}达到相同的效果。这要好得多,因为它不那么笨重,并且允许非常好的语法突出显示。

\n

但是,如果我在自己的包上尝试这样做,反引号会被解释为...只是反引号,就像任何其他字符一样。

\n

dplyr::across()例如,的文档以以下内容开头:

\n
#\' @description\n#\' `across()` makes it easy to apply the same transformation to multiple [...]\n
Run Code Online (Sandbox Code Playgroud)\n

它被编译并在手册页中显示为:

\n
\n

描述

\n

across()可以轻松地将相同的转换应用于多个[...]

\n
\n

但如果我在我的包裹上尝试类似的东西,我会得到:

\n
\n

描述

\n

`across()` 可以轻松地将相同的转换应用于多个 [...]

\n
\n

奇怪的是,我已经glue为一个简单的 PR 分叉了该包(它还设法使用反引号进行代码格式化),如果我在本地构建该包,则反引号起作用(我得到code格式化)。我一生都无法弄清楚为什么它在那里起作用但对我的包裹不起作用。

\n
\n

那么,我需要修改一些设置才能使其正常工作吗?我检查了 …

formatting r roxygen2

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