我正在使用Git来跟踪一些matlab代码.最好的玩具示例说明了这个问题.到目前为止,该项目看起来像这样.
C
/
A--
\
B
Run Code Online (Sandbox Code Playgroud)
A的内容是 x=5
我们创建提交C,其中行被更改为 x=6
然后我们进行提交B,其中我们的内容如下所示
if flag==1
x=5
end
Run Code Online (Sandbox Code Playgroud)
如果我们尝试合并项目的目标看起来像
C
/ \
A-- D
\ /
B
Run Code Online (Sandbox Code Playgroud)
合并结果在D中,我们会发生冲突,因为主线在两者中都有变化(在B中添加缩进,在C中变为6).
是否有最佳实践方法来集成来自一个分支的缩进更改,以及来自另一个分支的内容更改,以获得合并结果?
我在/sf/answers/368373141/上读过一个策略,虽然这样可以避免冲突,但它会丢弃缩进以支持内容更改(这是一个改进,但仍然使为了更难阅读代码).
我想我可以在编写代码时吮吸它而不是更改缩进.这使得它的可读性降低,但在matlab中并不是一件大事.然而,在python中,缩进真的很重要,那么python人们如何处理呢?如果有大块代码我们后来改变为控制结构内部,那么这会变得更加丑陋,因此差异触及许多行并使合并冲突成为一个巨大的麻烦.
是否有合并策略分别处理间距更改和内容更改,然后集成它们?我想要合并的结果
if flag==1
x=6
end
Run Code Online (Sandbox Code Playgroud) 我有一个列表,其中每个列表元素本身包含具有多个名称对象的另一个列表.这些命名对象中的每一个都是相同长度的向量.我的目标是通过连接向量有效地将相关对象(同名对象)组合成矩阵.
这是我正在使用的结构类型的一个例子.但是,在当前的应用程序中,它来自mclapply,因为它是一个并行化的多级模型,我认为没有办法获得列表列表.
> test=lapply(1:2,function(x){out = list(); out$t=rnorm(3)+x; out$p =rnorm(3)+ x+.1; return(out)})
> test
[[1]]
[[1]]$t
[1] 0.5950165 0.8827352 0.5614947
[[1]]$p
[1] 2.6144102 1.9688743 0.6241944
[[2]]
[[2]]$t
[1] 2.562030 1.832571 3.018756
[[2]]$p
[1] 1.7431969 0.5305784 2.6935106
Run Code Online (Sandbox Code Playgroud)
这是实现我想要的原始方式
> t.matrix = cbind(test[[1]]$t,test[[2]]$t)
> t.matrix
[,1] [,2]
[1,] 2.2094525 2.634907
[2,] -0.2822453 2.440666
[3,] 1.1704518 2.483424
Run Code Online (Sandbox Code Playgroud)
但我希望能够为很长的列表(大约100万个元素)做到这一点,而我目前的解决方案并没有扩展.
我想我可以使用for循环,但似乎必须有一个更好的方法来巧妙地使用reduce或unlist或sapply或类似的东西.
假设我正在使用MATLAB IDE并且碰巧在我的工作空间中有一些非常大的对象(例如500k +元素的数组).现在,假设我愚蠢地偶然双击其中一个非常大的变量,这会触发对数组编辑器的加载.不幸的是,对于这么大的数组,MATLAB只是挂起.
我尝试过CTRL + C,CTRL + BREAK,CTRL + D,但似乎没有人能够中断IDE的行为.我知道我可以强制matlab退出,但是首先将所有这些变量读入工作区需要花费很多时间,而且我可能在编辑器窗口中有未保存的更改等.
对于神经影像应用,我试图通过R(标准调用lm)中的最小二乘拟合许多线性模型.想象一下,我有一个设计矩阵X.这个设计矩阵在所有模型中都是相同的.正在拟合的数据(Y)将改变,因此所有拟合参数(例如,beta,p值,残差等)也将改变.
目前,我只是将它放在for循环中,因此它正在进行数十万次调用lm.似乎必须有一个更好的方法.
我相信计算成本最高的部分是矩阵求逆.看起来这是通过lm.fit中的Fortran调用来处理的.
如果我手工做这个回归,我会进行矩阵求逆,然后将它乘以各种数据集.事实上,当我有一个表现良好的设计矩阵(例如所有连续值的协变量)时,我编写了一个函数来做到这一点.但是,我真的很喜欢所有的工作lm,比如适当地重新编码我的因素等,输出lm也非常好.
无论如何还有我的蛋糕和吃它?也就是说,为了获得lm的友好性,但是使用这种能力来计算有效地拟合具有相同设计矩阵的许多模型?
也许我错过了一些明显的东西.
在R中,TRUE && NAevalues到NA.这对我来说没有意义,因为&&应该从左到右进行评估,并在其中一个条件成立时立即停止.