我对R中的switch语句有点困惑.只需在googling函数中我得到一个例子,如下所示:
switch的一个常见用途是根据函数的一个参数的字符值进行分支.
> centre <- function(x, type) {
+ switch(type,
+ mean = mean(x),
+ median = median(x),
+ trimmed = mean(x, trim = .1))
+ }
> x <- rcauchy(10)
> centre(x, "mean")
[1] 0.8760325
> centre(x, "median")
[1] 0.5360891
> centre(x, "trimmed")
[1] 0.6086504
Run Code Online (Sandbox Code Playgroud)
然而,这似乎只是if为每个指定了一堆语句type
这就是全部switch()吗?有人可以给我更多的例子和更好的应用吗?
我有一个清单:
list1=[]
Run Code Online (Sandbox Code Playgroud)
列表的长度是未确定的,所以我试图将对象附加到list1的末尾,如下所示:
for i in range(0, n):
list1=list1.append([i])
Run Code Online (Sandbox Code Playgroud)
但是我的输出一直给出这个错误:AttributeError:'NoneType'对象没有属性'append'
这是因为list1作为空列表开始吗?我该如何解决这个错误?
我正在编写一个代码来确定我的nxn列表中的每个元素是否相同.即[[0,0],[0,0]]返回true但[[0,1],[0,0]]将返回false.我正在考虑编写一个代码,当它找到一个与第一个元素不同的元素时立即停止.即:
n=L[0][0]
m=len(A)
for i in range(m):
for j in range(m):
if
L[i][j]==n: -continue the loop-
else: -stop the loop-
Run Code Online (Sandbox Code Playgroud)
如果L[i][j]!==n 返回false,我想停止这个循环.否则返回true.我将如何实现这一目标?
在RI中发现自己做了很多这样的事情:
adataframe[adataframe$col==something]<-adataframe[adataframe$col==something)]+1
这种方式有点冗长乏味.有没有办法让我
引用我想要改变的对象,比如
adataframe[adataframe$col==something]<-$self+1
Run Code Online (Sandbox Code Playgroud)
?
如果我具有相同的长度的两个向量A<-c(5,10)和B<-c(7,13)如何可以很容易地将这些两个向量成单个元组向量即c((5,7),(7,13))?
我有一个功能
somefun <- function(someparameters , ...) { plot(stuff, ...)}
Run Code Online (Sandbox Code Playgroud)
现在我想在用户没有指定这些参数的情况下为绘图提供一些默认值.(即xlab="").
如何提供一组默认的绘图选项,但仍允许用户覆盖这些参数?因为如果两次输入相同的参数,R将抛出错误:由多个实际参数匹配的形式参数.
我知道我可以通过我的功能传递所有这些选项
somefun <- function(someparameters, main, xlab, ylab, xlim....)
Run Code Online (Sandbox Code Playgroud)
但我宁愿不这样做.
是否有一些简单的解决方案来实现这一目标?
我想知道python是否有类似的内置函数
string->list
Run Code Online (Sandbox Code Playgroud)
并list->string在计划中.
因此,例如,我想['a','b','c']使用内置函数将'abc'转换为反之,反之亦然.
我在接受采访时被问到这个问题:假设一个无限的整数数组被排序.你会如何在这个数组中搜索整数?什么是时间复杂性?我猜测访问者的意思是无限的是我们不知道'n'的值,其中n是数组中最大数字的索引.我给出了以下答案:
SEARCHINF(A,i,x){ // Assume we are searching for x
if (A(1) > x){
return
}
if(A(i) == x){
return i;
}
else{
low = i;
high = power(2,i);
if (A(i)>x){
BINARY-SEARCH(A,low,high);
}
else{
SEARCHINF(A,high,x);
}
}// end else
}// end SEARCHINF method
Run Code Online (Sandbox Code Playgroud)
在最坏的情况下,当排序的数字从1开始,随后的数字结束时,这将在(log x + 1)时间内找到界限(低和高).然后二进制搜索需要:
O( log {2^(ceil(log x)) - 2^(floor(log x))} )
Run Code Online (Sandbox Code Playgroud)
它是否正确?如果正确,可以优化吗?