这是一个缺少值的简单数据框:
M = data.frame( Name = c('name','name'), Col1 = c(NA,1) , Col2 = c(1,1))
当我以这种方式将聚合应用于M时:
aggregate(.~Name, M, FUN=sum, na.rm=TRUE)
结果是:
RowName Col1 Col2
name 1 1
Run Code Online (Sandbox Code Playgroud)
因此忽略整个第一行.但如果我这样做
aggregate(M[,2:3], by=list(M$Name), FUN=sum, na.rm=TRUE)
结果是
Group.1 Col1 Col2
name 1 2
Run Code Online (Sandbox Code Playgroud)
因此只忽略(1,1)条目.
这引起了我的一个代码中的主要调试问题,因为我认为这两个调用是等效的.是否有充分的理由为什么"公式"输入方法被区别对待?
谢谢.
我继承了一个大型Java/Scala代码库,它使用Jython与我们同样大的Python代码库进行交互.直到大约三天前突然所有的构建在Jython阶段开始失败时,情况仍在顺利进行:
RuntimeException:java.lang.RuntimeException:方法代码太大了!
事实证明,JVM内部方法的大小内部限制为65kb.最新版本的Python请求似乎是罪魁祸首,这是我们Python代码库的重要依赖.我的猜测是,最新版本在某处引入了一个非常大的类.
最明显的解决方案是将请求库版本固定到早期版本.我应该固定Python代码的所有库版本(就像我在Java中那样)吗?除版本固定外还有其他工作吗?我冒了太大的风险吗?