小编Hon*_*dha的帖子

expression.bind和expression.assign之间有什么区别(或者:关于MemberBinding的特殊之处)

所以,这是进入细节,但我希望这里有人可能有洞察力.

这是我设法收集的内容(当然,我可能错了任何一个,所以请纠正我)

Expression.Bind

基于我的研究,包括[topic] [1]上的MSDN Entry,似乎Expression.Bind方法用于生成MemberAssignment类型的表达式,MemberAssignment是MemberBinding表达式的特定子类型.该方法采用MemberInfo和它应该绑定的表达式.生成的MemberAssignment表达式表示成员的初始化.

Expression.Assign

是一种创建表示赋值操作的BinaryExpression的方法

这是我的问题:为什么我们只能在提供Expression.MemberInit方法的绑定时使用Expression.Assign?代替:

    MemberAssignment binding = Expression.Bind(PropAccessMethodInfo, TargetExpression)
Run Code Online (Sandbox Code Playgroud)

例如,我们可以执行以下操作:

    MemberExpression getProperty = Expression.Property(FindObjectExpression, PropAccessMethodInfo)
    Expression binding = Expression.Assign(getProperty, TargetExpression)
Run Code Online (Sandbox Code Playgroud)

我知道编译器会抱怨,但我想我在问这里是否还有一个语法问题.换句话说,Expression.Bind/MemberBindings会给我们一些额外的东西吗?或者,它们只是语法糖,使管理成员初始化更容易吗?

更具体地说,它是否可以帮助跟踪业务对象与.NET EF4中的底层实体之间的关系?它是否适合实体框架中的"使用代理"或帮助进行更改跟踪或业务对象与基于EF的数据访问层之间的桥梁?

正如您可能预见的那样,我正在尝试以编程方式从底层组件Entities连接我的业务对象的创建,这样的表达式(尤其是MemberInit方法)可以帮助确定创建位.

但是,我不确定EF/.NET是否足够聪明,可以使用这些绑定进行跟踪?或者,我是否可以将这些相同的绑定重用于Biz < - > Ent tracking/bridge.

我希望这是有道理的.如果有什么不清楚的地方,我很乐意提供更多信息.

谢谢!!

c# expression-trees

8
推荐指数
1
解决办法
1807
查看次数

我们如何用两行显示 F 统计量/自由度

我正在使用 Stargazer 输出包含多个 lm 模型的回归表。问题是 Stargazer 默认在一行中输出 F 统计量和自由度。如果您有 3 或 4 个模型,则意味着 Latex 中的输出不必要地宽并且延伸到页面之外。

有一个选项可以使用以下方法隐藏自由度:

stargazer(lm1,lm2,lm3,lm4, df = F)
Run Code Online (Sandbox Code Playgroud)

但是,没有办法让它显示在两行上。

这是一个可重现的不良结果示例:

lm.out.1 <- lm(stack.loss ~ Air.Flow , data=stackloss)
lm.out.2 <- lm(stack.loss ~ Water.Temp, data=stackloss)
lm.out.3 <- lm(stack.loss ~ Acid.Conc., data=stackloss)
lm.out.4 <- lm(stack.loss ~ Air.Flow + Water.Temp, data=stackloss)
lm.out.5 <- lm(stack.loss ~ Air.Flow + Water.Temp + Acid.Conc., data=stackloss)

stargazer(lm.out.1, 
          lm.out.2,
          lm.out.3,
          lm.out.4,
          lm.out.5)
Run Code Online (Sandbox Code Playgroud)

当你渲染乳胶输出时,你会得到一个不必要的宽表: 在此输入图像描述

当渲染打印时,它位于页边距之外: 在此输入图像描述

可以看到如何使用df=F选项以可打印的方式整齐有效地呈现该表:

stargazer(lm.out.1, 
          lm.out.2,
          lm.out.3,
          lm.out.4,
          lm.out.5, df = F)
Run Code Online (Sandbox Code Playgroud)

产生以下结果: 在此输入图像描述

但是,现在我们失去了有关自由度的信息。

有没有办法打印带有换行符的信息,以便它打印在表格的两行上? …

latex r linear-regression r-markdown stargazer

8
推荐指数
1
解决办法
1023
查看次数