小编Rya*_*son的帖子

如何在不修改任何一个列表的情况下获取Python中两个列表的串联?

在Python中,我可以找到连接两个列表的唯一方法是list.extend修改第一个列表.是否有任何串联函数返回其结果而不修改其参数?

python concatenation sequence list-manipulation

636
推荐指数
7
解决办法
85万
查看次数

是否有R函数用于查找向量中元素的索引?

在R中,我有一个元素x和一个向量v.我想找到一个元素的第一个索引v,它等于x.我知道这样做的一种方法是:which(x == v)[[1]],但这似乎效率过低.有更直接的方法吗?

对于奖励积分,是否有一个功能,如果x是一个矢量?也就是说,它应该返回一个索引向量,指示xin 的每个元素的位置v.

indexing r vectorization match

290
推荐指数
4
解决办法
48万
查看次数

在编写自己的函数时如何使用R的省略号功能?

R语言有一个很好的功能,用于定义可以采用可变数量参数的函数.例如,该函数data.frame接受任意数量的参数,并且每个参数都成为结果数据表中列的数据.用法示例:

> data.frame(letters=c("a", "b", "c"), numbers=c(1,2,3), notes=c("do", "re", "mi"))
  letters numbers notes
1       a       1    do
2       b       2    re
3       c       3    mi
Run Code Online (Sandbox Code Playgroud)

函数的签名包括省略号,如下所示:

function (..., row.names = NULL, check.rows = FALSE, check.names = TRUE, 
    stringsAsFactors = default.stringsAsFactors()) 
{
    [FUNCTION DEFINITION HERE]
}
Run Code Online (Sandbox Code Playgroud)

我想编写一个类似的函数,获取多个值并将它们合并为一个返回值(以及进行一些其他处理).为了做到这一点,我需要弄清楚如何...从函数中的函数参数"解包" .我不知道该怎么做.功能定义中的相关行data.frameobject <- as.list(substitute(list(...)))[-1L],我无法理解.

那么如何将省略号从函数的签名转换为例如列表呢?

更具体地说,我如何写get_list_from_ellipsis下面的代码?

my_ellipsis_function(...) {
    input_list <- get_list_from_ellipsis(...)
    output_list <- lapply(X=input_list, FUN=do_something_interesting)
    return(output_list)
}

my_ellipsis_function(a=1:10,b=11:20,c=21:30)
Run Code Online (Sandbox Code Playgroud)

编辑

似乎有两种可能的方法来做到这一点.他们是as.list(substitute(list(...)))[-1L]list(...).但是,这两者并没有完全相同.(有关差异,请参阅答案中的示例.)任何人都可以告诉我它们之间的实际区别是什么,我应该使用哪一个?

parameters r function ellipsis variadic

175
推荐指数
5
解决办法
5万
查看次数

在Python中格式化多行dict的正确方法是什么?

在Python中,我想在我的代码中编写一个多行dict.有几种方法可以格式化它.以下是我能想到的一些内容:

  1. mydict = { "key1": 1,
               "key2": 2,
               "key3": 3, }
    
    Run Code Online (Sandbox Code Playgroud)
  2. mydict = { "key1": 1,
               "key2": 2,
               "key3": 3,
             }
    
    Run Code Online (Sandbox Code Playgroud)
  3. mydict = {
        "key1": 1,
        "key2": 2,
        "key3": 3,
    }
    
    Run Code Online (Sandbox Code Playgroud)

我知道上面的任何一个在语法上都是正确的,但我认为Python dicts有一个首选的缩进和换行样式.它是什么?

注意:这不是语法问题.以上所有(据我所知)有效的Python语句并且彼此等效.

python code-formatting indentation multiline

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

启用git rerere有什么缺点吗?

我已经阅读了关于git的rerere功能的各种内容,我正在考虑启用它.但我没有看到有人提到使用它时可能出现的任何问题.我必须假设有一个缺点,或者它可能默认启用.那么启用rerere有什么缺点吗?哪些潜在的问题会导致不会发生?

git merge git-rerere

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

如何将对象加载到我从R数据文件指定的变量名中?

使用时将变量保存在R数据文件中时save,它将以保存它的会话中的名称保存.当我稍后从另一个会话加载它时,它加载了相同的名称,加载脚本不可能知道.此名称可能会覆盖加载会话中同名的现有变量.有没有办法将数据文件中的对象安全地加载到指定的变量名中,而没有破坏现有变量的风险?

例:

保存会话:

x = 5
save(x, file="x.Rda")
Run Code Online (Sandbox Code Playgroud)

加载会话:

x = 7
load("x.Rda")
print(x) # This will print 5. Oops.
Run Code Online (Sandbox Code Playgroud)

我希望它如何工作:

x = 7
y = load_object_from_file("x.Rda")
print(x) # should print 7
print(y) # should print 5
Run Code Online (Sandbox Code Playgroud)

r variable-names rdata

85
推荐指数
5
解决办法
3万
查看次数

如何将前一个表达式的结果赋给变量?

假设我正在使用R的交互式控制台,我刚刚做了类似这样的事情:

long_running_command()
Run Code Online (Sandbox Code Playgroud)

这个长时间运行的命令返回一个值,我刚刚意识到我想将该值赋给变量而不是丢弃它.那么如何在不再运行命令的情况下获得该值呢?有这样的命令吗?

result = get_last_return_value()
Run Code Online (Sandbox Code Playgroud)

interactive r return-value built-in

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

什么是R的rbind和cbind的多维等价物?

在R中使用矩阵时,可以将它们并排放置或分别使用cbind和rbind将它们堆叠在一起.在其他维度堆叠矩阵或数组的等效函数是什么?

例如,下面创建一对2x2矩阵,每个矩阵有4个元素:

x = cbind(1:2,3:4)
y = cbind(5:6,7:8)
Run Code Online (Sandbox Code Playgroud)

将它们组合成具有8个元素的2x2x2数组的代码是什么?

r multidimensional-array matrix-multiplication

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

在emacs lisp中将多个路径组件连接到单个完整路径的正确方法是什么?

假设我有变量dir并且分别file包含表示目录和文件名的字符串.emacs lisp将它们连接到文件的完整路径的正确方法是什么?

例如,如果dir"/usr/bin"file"ls"的话,我想"/usr/bin/ls".但是,如果不是dir就是"/usr/bin/",我还是希望同样的事情,没有重复的斜线.

filenames elisp path-manipulation

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

如何在Python中的新样式类上正确覆盖__setattr__和__getattribute__?

我想覆盖我的Python类__getattribute____setattr__方法.我的用例是通常的:我有一些我想要处理的特殊名称,我想要其他任何东西的默认行为.因为__getattribute__,似乎我可以简单地通过提高来请求默认行为AttributeError.但是,我怎样才能实现同样的目标__setattr__呢?这是一个简单的例子,实现了一个具有不可变字段"A","B"和"C"的类.

class ABCImmutable(SomeSuperclass):
    def __getattribute__(self, name):
        if name in ("A", "B", "C"):
            return "Immutable value of %s" % name
        else:
            # This should trigger the default behavior for any other
            # attribute name.
            raise AttributeError()

    def __setattr__(self, name, value):
        if name in ("A", "B", "C"):
            raise AttributeError("%s is an immutable attribute.")
        else:
            # How do I request the default behavior?
            ???
Run Code Online (Sandbox Code Playgroud)

什么代替问号?对于旧式类,答案很明显self.__dict__[name] = value,但文档表明这对于新式类来说是错误的.

python inheritance python-2.x setattr python-3.x

38
推荐指数
2
解决办法
3万
查看次数