在Python中,我可以找到连接两个列表的唯一方法是list.extend
修改第一个列表.是否有任何串联函数返回其结果而不修改其参数?
在R中,我有一个元素x
和一个向量v
.我想找到一个元素的第一个索引v
,它等于x
.我知道这样做的一种方法是:which(x == v)[[1]]
,但这似乎效率过低.有更直接的方法吗?
对于奖励积分,是否有一个功能,如果x
是一个矢量?也就是说,它应该返回一个索引向量,指示x
in 的每个元素的位置v
.
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.frame
是object <- 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(...)
.但是,这两者并没有完全相同.(有关差异,请参阅答案中的示例.)任何人都可以告诉我它们之间的实际区别是什么,我应该使用哪一个?
在Python中,我想在我的代码中编写一个多行dict.有几种方法可以格式化它.以下是我能想到的一些内容:
mydict = { "key1": 1,
"key2": 2,
"key3": 3, }
Run Code Online (Sandbox Code Playgroud)mydict = { "key1": 1,
"key2": 2,
"key3": 3,
}
Run Code Online (Sandbox Code Playgroud)mydict = {
"key1": 1,
"key2": 2,
"key3": 3,
}
Run Code Online (Sandbox Code Playgroud)我知道上面的任何一个在语法上都是正确的,但我认为Python dicts有一个首选的缩进和换行样式.它是什么?
注意:这不是语法问题.以上所有(据我所知)有效的Python语句并且彼此等效.
我已经阅读了关于git的rerere功能的各种内容,我正在考虑启用它.但我没有看到有人提到使用它时可能出现的任何问题.我必须假设有一个缺点,或者它可能默认启用.那么启用rerere有什么缺点吗?哪些潜在的问题会导致不会发生?
使用时将变量保存在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的交互式控制台,我刚刚做了类似这样的事情:
long_running_command()
Run Code Online (Sandbox Code Playgroud)
这个长时间运行的命令返回一个值,我刚刚意识到我想将该值赋给变量而不是丢弃它.那么如何在不再运行命令的情况下获得该值呢?有这样的命令吗?
result = get_last_return_value()
Run Code Online (Sandbox Code Playgroud) 在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数组的代码是什么?
假设我有变量dir
并且分别file
包含表示目录和文件名的字符串.emacs lisp将它们连接到文件的完整路径的正确方法是什么?
例如,如果dir
是"/usr/bin"
和file
是"ls"
的话,我想"/usr/bin/ls"
.但是,如果不是dir
就是"/usr/bin/"
,我还是希望同样的事情,没有重复的斜线.
我想覆盖我的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
,但文档表明这对于新式类来说是错误的.
r ×5
python ×3
built-in ×1
elisp ×1
ellipsis ×1
filenames ×1
function ×1
git ×1
git-rerere ×1
indentation ×1
indexing ×1
inheritance ×1
interactive ×1
match ×1
merge ×1
multiline ×1
parameters ×1
python-2.x ×1
python-3.x ×1
rdata ×1
return-value ×1
sequence ×1
setattr ×1
variadic ×1