我想创建一个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)相反,创建一个虚拟对象并迭代它会更有效吗?
该seq手册页指出以下(重点煤矿):
描述
生成规则序列。
seq是具有默认方法的标准泛型。seq.int是一个可以更快但有一些限制的原语。
不过,该页面实际上并没有描述这些限制是什么。这是seq.int那里的所有其他提及:
参数
[...]
length.out所需的序列长度。一个非负数,如果是小数seq,seq.int它将被四舍五入。[...]
细节
[...]
的无名参数的解释
seq和seq.int不规范,并建议总是在节目命名的参数。[...]
seq.int是一个内部泛型,它seq根据第一个提供的参数的类(在参数匹配之前)调度“ ”的方法。
seq.int,seq_along并且seq_len是原始的。价值
seq.intseq数字参数的默认方法返回一个类型为“integer”或“double”的向量:程序员不应依赖于哪个。
除了说明根据第一个参数的类进行seq.int调度之外seq,我没有看到任何“限制”。
那么,这些限制是什么?
我有以下内容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=1,V2=4),因此我希望将其删除。
但是,接下来的四行包括两个相同的行,其他具有不同的V2。在这种情况下,我想说明的三个可能的值V2给出V1 = 2:(2, 5),(2, …
我有一个带有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()<-"?
我已经构建了一个在公式本身中使用R1C1表示法的电子表格.我已经成功地做了所有需要做的事情,而不必求助于宏或VBA(需要不同的文件格式,并且用户在打开文件时"启用宏"等).
唯一的问题是,我现在已经注意到,虽然Excel将其所有功能转换为本地语言(我必须处理英语,葡萄牙语和西班牙语),但它不处理用于R1C1表示法的字符串文字.例如,如果不是因为葡萄牙语R1C1实际上是L1C1,那么用INDIRECT("R[1]C[1]")葡萄牙语翻译INDIRETO("R[1]C[1]")就可以了.
我假设我使用VBA这不会是一个问题,因为VBA没有翻译,我会认为R1C1实际上是R1C1而不管客户端语言.但是有可能在不必诉诸VBA的情况下做到这一点吗?
我有一个我想要动画的仪表图(按照本教程),图的颜色根据当前值而变化。我还想要一个注释*,它显示仪表的当前值(我不希望在扇区中显示标准值)。
为了记录,我正在尝试使用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) 我正在处理来自多家公司的一些历史财务数据。
我的 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) 如果从.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)
上面代码的详细程度的唯一减少是将foo和bar的声明更改为var.
现在,如果IClonable.Clone()返回了一个动态,那么底层类(在运行时)仍然是MyClass,但代码会变得稍微冗长:
MyClass foo = new MyClass(...);
MyClass bar = foo.Clone();
Run Code Online (Sandbox Code Playgroud)
这种变化会不会有任何不利因素?
我有一个包含两列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) 编写带有格式的文档的标准方法code是使用\\code{}.
也就是说,#\' @param foo value passed on to \\code{bar()}变成
\n\n论据
\n\n
foo\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0值传递给bar()
但是,我见过一些包(即dplyr)使用反引号而不是\\code{}达到相同的效果。这要好得多,因为它不那么笨重,并且允许非常好的语法突出显示。
但是,如果我在自己的包上尝试这样做,反引号会被解释为...只是反引号,就像任何其他字符一样。
\ndplyr::across()例如,的文档以以下内容开头:
#\' @description\n#\' `across()` makes it easy to apply the same transformation to multiple [...]\nRun Code Online (Sandbox Code Playgroud)\n它被编译并在手册页中显示为:
\n\n\n描述
\n\n
across()可以轻松地将相同的转换应用于多个[...]
但如果我在我的包裹上尝试类似的东西,我会得到:
\n\n\n描述
\n`across()` 可以轻松地将相同的转换应用于多个 [...]
\n
奇怪的是,我已经glue为一个简单的 PR 分叉了该包(它还设法使用反引号进行代码格式化),如果我在本地构建该包,则反引号起作用(我得到code格式化)。我一生都无法弄清楚为什么它在那里起作用但对我的包裹不起作用。
那么,我需要修改一些设置才能使其正常工作吗?我检查了 …
r ×7
c# ×2
data.table ×2
roxygen2 ×2
animation ×1
arrays ×1
dynamictype ×1
excel ×1
foreach ×1
formatting ×1
interface ×1
pie-chart ×1
plotly ×1
r-plotly ×1
sum ×1