小编Jon*_*aus的帖子

R中函数解析树的冗余

在R,我注意到的解析树function运营商似乎是在这个意义上,它的第四个要素是看似总是由前三个元素的冗余.

例如,

> as.list(substitute(function(x = 1){x^2}))
[[1]]
`function`

[[2]]
[[2]]$x
[1] 1


[[3]]
{
    x^2
}

[[4]]
function(x = 1){x^2}
Run Code Online (Sandbox Code Playgroud)

我注意到的一件事是第四个元素确实存储了输入函数的格式.

> as.list(substitute(function(x = 1){
+ x^2})[[4]]
function(x = 1){
x^2}
Run Code Online (Sandbox Code Playgroud)

解析树中第四个元素的目的是什么?我唯一能看到它被使用的是你想要逐字打印一个函数,你已经可以通过打印函数来完成,例如

> f = function(x = 1){
+ x^2}
> f
function(x = 1){
x^2}
Run Code Online (Sandbox Code Playgroud)

r parse-tree

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

获取R中预定义函数的解析树

我觉得这是一个相当基本的问题,但我无法弄清楚.

如果我在R中定义一个函数,我以后如何使用该函数的名称来获取其解析树.我不能只使用substitute,因为它将返回其参数的解析树,在这种情况下只是函数名称.

例如,

> f <- function(x){ x^2 }
> substitute(f)
f
Run Code Online (Sandbox Code Playgroud)

我应该如何使用其名称访问函数的解析树?例如,如何在substitute(function(x){ x^2 })不明确写出整个函数的情况下获取值?

r substitution parse-tree

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

使用R中的重复命令切换语句

在R中,有没有办法制作一个switch语句,以便为两种不同的情况执行相同的代码块?显然我可以复制并粘贴两个语句的整个代码,但我希望有一个更简洁的方法来做到这一点.

我也可以使用if-else块来避免重复大块代码,但是在R中切换通常更快.

由于R将switch语句解析为函数的方式似乎不太可能,但我希望R的开发人员特别注意解析switch语句以允许多个参数引用相同的代码块.

r switch-statement

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

更改LISP中的列表副本

在LISP中,我有一个传递列表的函数.我想在不更改原始列表的情况下更改此列表的元素.通常,我会copy-list用来创建我将更改的列表的本地副本,但这似乎不起作用:

CL-USER> (defun test (item)
    (let ((copy (copy-list item)))
         (setf (nth 0 (nth 0 (nth 0 copy))) t)
         (print item)
         (print copy)))

CL-USER> (defparameter item `(((NIL NIL) (NIL NIL) (NIL NIL))
                     ((NIL NIL NIL) (NIL NIL NIL))
                     ((3 3) (NIL NIL))))

CL-USER> (test item)
(((T NIL) (NIL NIL) (NIL NIL)) ((NIL NIL NIL) (NIL NIL NIL)) ((3 3) (NIL NIL))) 
(((T NIL) (NIL NIL) (NIL NIL)) ((NIL NIL NIL) (NIL NIL NIL)) ((3 3) (NIL NIL))) 
(((T NIL) …
Run Code Online (Sandbox Code Playgroud)

lisp common-lisp pass-by-reference

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

在Spark数据帧中为每个组创建索引

我在Spark中有一个带有2列的数据框,group_id并且value,其中value是double.我想根据group_id每个组的顺序对数据进行分组value,然后添加第三列index,表示value组中值的排序位置.

例如,考虑以下输入数据:

+--------+-----+
|group_id|value|
+--------+-----+
|1       |1.3  |
|2       |0.8  |
|1       |3.4  |
|1       |-1.7 |
|2       |2.3  |
|2       |5.9  |
|1       |2.7  |
|1       |0.0  |
+--------+-----+
Run Code Online (Sandbox Code Playgroud)

那么输出就像是

+--------+-----+-----+
|group_id|value|index|
+--------+-----+-----+
|1       |-1.7 |1    |
|1       |0.0  |2    |
|1       |1.3  |3    |
|1       |2.7  |4    |
|1       |3.4  |5    |
|2       |0.8  |1    |
|2       |2.3  |2    |
|2       |5.9  |3    | …
Run Code Online (Sandbox Code Playgroud)

apache-spark apache-spark-sql

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

使用R中的默认值检索函数调用的参数

有没有办法从评估公式中检索函数调用中未指定的函数参数?

例如,考虑呼叫seq(1, 10).如果我想获得第一个参数,我可以使用quote()并简单地使用quote(seq(1,10))[[1]].但是,这仅在函数调用中定义参数(而不是具有默认值)时才有效,并且我需要知道其确切位置.

在这个例子中,是否有一些方法可以byseq(1, 10)没有冗长的if语句列表中获取参数来查看它是否已定义?

parsing r

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

将`glm`生成的对象视为R中的列表

在R中,回归函数glm产生一个类的对象,glm它是一个列表.

由于它是一个列表,我应该能够将类的对象glm视为列表而不进行任何格式化.但是,as.list似乎没有这样做.

例如,if fit是由函数拟合的模型glm:

> as.list(fit)

Call:  glm(formula = V4 ~ V3 + V2 + V1, family = Gamma, data = data)

Coefficients:
(Intercept)           V3           V2           V1  
      1.349        1.593        1.577        1.127  

Degrees of Freedom: 9999 Total (i.e. Null);  9996 Residual
Null Deviance:      2137 
Residual Deviance: 2048         AIC: -30180
Run Code Online (Sandbox Code Playgroud)

另一方面,适用于列表的其他函数正确工作,例如names将生成相关列表的30个名称.

此外,我可以以与我对任何其他列表相同的方式查看单个元素:

> fit$coefficients
(Intercept)          V3          V2          V1 
   1.349282    1.593067    1.576868    1.127067 
Run Code Online (Sandbox Code Playgroud)

是否有任何预先存在的功能,允许我fit在列表中查看而不进行格式化?

正如我上面所说,我可以使用列表的名称构建自己的函数,但这对于这样一个简单的任务来说似乎是不必要的.

r glm

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

函数体和头之间声明的变量

在阅读MINIX的源代码时,我遇到了以下内容:

int do_read_write(rw_flag)
int rw_flag;                    /* READING or WRITING */
{
Run Code Online (Sandbox Code Playgroud)

看起来中间行用于声明rw_flag函数输入的类型,但我以前从未见过这种表示法.它与以下有何不同?

int do_read_write(int rw_flag) {
Run Code Online (Sandbox Code Playgroud)

如果没有,它是否可以用于任何目的,除了扩展代码以便可以更多地评论它?

c

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

改进了R中的`is.language`功能

在R,有将返回一个函数TRUE,如果它的参数的类型为languageFALSE以其他方式?

is.language函数不满足此要求,因为它将返回TRUE类型symbol或类型的参数expression.显然,我可以简单地检查参数的类型是language使用类似的东西typeof(x) == 'language'还是编写我自己的函数,但似乎奇怪的是R不会为此目的而拥有自己的函数,因为R中的大多数类型具有相关的 -特定于这些类型的类型函数.

r

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

g map map <T,int> :: iterator的编译错误

使用Visual Studio 2012时,以下代码编译时没有错误(T是模板参数):

pair<map<T, int>::iterator, bool> ret;
Run Code Online (Sandbox Code Playgroud)

但是,当我使用g ++时,它会抛出错误消息

error: type/value mismatch at argument 1 in template parameter list for template<class _T1, class _T2> struct std::pair
Run Code Online (Sandbox Code Playgroud)

由于某种原因,它不承认map<T, int>::iterator是一种类型.我应该如何解决这个问题?

c++ g++

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