我试着通过以下方式构建聚类方法:
mydata <- mtcars
# Here I construct hclust as a function
hclustfunc <- function(x) hclust(as.matrix(x),method="complete")
# Define distance metric
distfunc <- function(x) as.dist((1-cor(t(x)))/2)
# Obtain distance
d <- distfunc(mydata)
# Call that hclust function
fit<-hclustfunc(d)
# Later I'd do
# plot(fit)
Run Code Online (Sandbox Code Playgroud)
但为什么它会出现以下错误:
Error in if (is.na(n) || n > 65536L) stop("size cannot be NA nor exceed 65536") :
missing value where TRUE/FALSE needed
Run Code Online (Sandbox Code Playgroud)
什么是正确的方法呢?
根据C++ 14 [expr.call]/4:
参数的生命周期在定义它的函数返回时结束.
这似乎意味着参数的析构函数必须在调用函数的代码继续使用函数的返回值之前运行.
但是,此代码显示不同:
#include <iostream>
struct G
{
G(int): moved(0) { std::cout << "G(int)\n"; }
G(G&&): moved(1) { std::cout << "G(G&&)\n"; }
~G() { std::cout << (moved ? "~G(G&&)\n" : "~G()\n"); }
int moved;
};
struct F
{
F(int) { std::cout << "F(int)\n"; }
~F() { std::cout << "~F()\n"; }
};
int func(G gparm)
{
std::cout << "---- In func.\n";
return 0;
}
int main()
{
F v { func(0) };
std::cout << "---- End of main.\n"; …Run Code Online (Sandbox Code Playgroud) 我想知道是否有任何方法列出源代码中对函数的所有调用,以便我可以看到依赖项,如果我修改该函数.
我使用的一种方法是在"整个解决方案"中搜索函数名称,但我正在寻找更好的方法.
因此,Python函数可以返回多个值.让我感到震惊的是,如果可能的话,这将是方便的(尽管可读性稍差).
a = [[1,2],[3,4]]
def cord():
return 1, 1
def printa(y,x):
print a[y][x]
printa(cord())
Run Code Online (Sandbox Code Playgroud)
......但事实并非如此.我知道你可以通过将两个返回值转储到临时变量中来做同样的事情,但它看起来并不优雅.我还可以将最后一行重写为"printa(cord()[0],cord()[1])",但这会执行两次cord().
有一种优雅,有效的方法吗?或者我应该只看到关于过早优化的引用并忘记这一点?
我已经了解到通常的做法是在函数中使用可选参数并使用missing()进行检查(例如,如SO 22024082中所述)
在这个例子中,round0是可选参数(我知道,round0可以定义为逻辑).
foo = function(a, round0) {
a = a * pi
if(!missing(round0)) round(a)
else a
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我从另一个函数调用此函数,我怎么能传递"missing"?
bar = function(b) {
if(b > 10) round1=T
foo(b, round1)
}
Run Code Online (Sandbox Code Playgroud)
如果b <10,则bar()中的round1未定义,但无论如何都会传递给foo.如果我修改foo():
foo = function(a, round0) {
a = a * pi
print(missing(round0))
print(round0)
if(!missing(round0)) round(a)
else a
}
Run Code Online (Sandbox Code Playgroud)
并运行bar(9)输出为:
bar(9)
[1] FALSE
Error in print(round0) : object 'round1' not found
Called from: print(round0)
Run Code Online (Sandbox Code Playgroud)
这意味着:round0没有丢失,但也无法访问?
我不想在bar()中使用不同的函数调用,如果foo()中有几个可选参数,我将不得不为每个缺失/不丢失编写一个函数调用 - 所有可选参数的组合.
是否可以通过"缺失",或者其他解决方案适用于此问题?
以下有什么区别?
onClick="javascript: function('value');"onClick="function('value');"我何时使用javascript:函数调用之前,为什么?
我可以不使用javascript:前缀调用该函数吗?
请帮我理解其中的区别.
我想使用php简单的HTML DOM解析器从一篇充满文章的页面上的每篇文章中获取图像,标题,日期和描述.在查看API时,我注意到它有一个set_callback,它设置了一个回调函数.但是,我不知道这是做什么或如何使用它?在其中一个示例中,它用于调用一个删除一些东西的函数,我想知道你是否必须使用它来调用所有函数?
我想我想知道为什么我使用它,它做了什么,因为我之前从未遇到过回调函数!
我正在写一个PHP邮件功能,有些例子@mail(…)和其他人都有mail(…).
有什么区别,哪一个最好用?
干杯
是否可以使用您自己的数据类型模拟具有GHC扩展名的函数?我想做的是例如
(假想的语法)
data MyFunc = MyFunc String (Int->Int)
instance (Int->Int) MyFunc where
($) (MyFunc _ f) i = f i
inc = MyFunc "increment" (1+)
test = inc 1Run Code Online (Sandbox Code Playgroud)
即带有一些元信息的数据,可以进行模式匹配,但仍可以像常规函数一样调用.现在,我知道我可以定义自己的中缀运算符$$和调用inc $$ 1,但是能够使用常规函数调用语法在嵌入式DSL中非常有用.
function-calls ×10
php ×2
r ×2
arguments ×1
c++ ×1
c++14 ×1
callback ×1
dom ×1
function ×1
haskell ×1
hclust ×1
javascript ×1
oop ×1
python ×1
return-value ×1
sequencing ×1
types ×1
uml ×1