我在之前的Java项目中使用的一个老技巧是创建一个FileUtils类,它为我的项目所需的常见文件操作提供辅助函数,而不是由例如org.apache.commons.io.FileUtils.因此,我的习惯FileUtils将扩展org.apache.commons.io.FileUtils并提供其所有功能.
现在我尝试在Scala中做同样的事情,但是我的FileUtilsScala对象看不到apache帮助函数,这里有什么问题?
import org.apache.commons.io.{ FileUtils => ApacheFileUtils }
object FileUtils extends ApacheFileUtils {
// ... additional helper methods
}
val content = FileUtils.readFileToString(new File("/tmp/whatever.txt"))
Run Code Online (Sandbox Code Playgroud)
编译器抱怨这readFileToString不是我的Scala的成员,FileUtils但它是ApacheFileUtils我的,并且我从它延伸...
我有以下片段,有点不言自明:
> value <- by(df$Percent, df$Year, sum)
> str(value)
'by' int [1:20(1d)] 100 100 100 100 100 100 100 100 100 100 ...
- attr(*, "dimnames")=List of 1
..$ df$Year: chr [1:20] "1993" "1994" "1995" "1996" ...
- attr(*, "call")= language by.default(data = df$Percent, INDICES = df$Year, FUN = sum)
Run Code Online (Sandbox Code Playgroud)
问题是如何提取所有密钥(在本例中为Year)和聚合值(所有和Percents)作为集合?我已经尝试了很多东西,但无法弄清楚如何获得它,例如在这种情况下所有年份和所有百分之.
我找到的唯一方法是使用[[]]运算符迭代和访问它,例如值[[1]],但这是非常低效和不方便的.
更新:我的用例是我有以下数据集,例如
Year Percent
1999 40
1999 20
1999 10
2000 10
2000 20
Run Code Online (Sandbox Code Playgroud)
我只需要每年的百分比之和即
Year Percent
1999 70
2000 30
Run Code Online (Sandbox Code Playgroud)
通过给我这个,但在一个EXTREMELLY不方便的输出结构.我只需要两个列表或一个简单的输出数据帧.
我有以下代码说明了我想要实现的目标,但它无法编译……我想确定configMapof 类型是否Map包含一个带值的键,"runOnGrid"以及它是否确实获得了它的布尔值。
val runOnGrid : Boolean = args.configMap.get("runOnGrid") match {
case Some(value) : Option[Boolean] => value // <=== compiler error
case None => false
}
Run Code Online (Sandbox Code Playgroud)
但这不起作用,因为我不能这样做,Some(value) : Option[Boolean]即我必须在按值或按类型匹配之间进行选择。为了实现这一点,显然我需要更好的 Scala 功夫……谁能给点建议?
更新:同时我想出了这种可怕的方式来做到这一点
val runOnGrid = args.configMap.get(("runOnGrid") match {
case Some(value) => value.isInstanceOf[Boolean] && value.asInstanceOf[Boolean]
case _ => false
}
Run Code Online (Sandbox Code Playgroud)
更新:ConfigMap 在 Scalatest 中定义为:
class ConfigMap(underlying: Map[String, Any]) extends Map[String, Any] ...
Run Code Online (Sandbox Code Playgroud) 我在Scala Saddle中找到了以下定义,只是想确保我理解正确.有一个对象定义了一个隐式函数,它将一些HDF5 I/O功能暴露给Frame类型,以便该writeHdfFile函数可用于任何Frame:
object H5Implicits {
/**
* Provides enrichment on Frame object for writing to an HDF5 file.
*/
implicit def frame2H5Writer[RX: ST: ORD, CX: ST: ORD, T: ST](frame: Frame[RX, CX, T]) = new {
/**
* Write a frame in HDF5 format to a file at the path provided
*
* @param path File to write
* @param id Name of the HDF group in which to store frame data
*/
def writeHdfFile(path: String, id: String) …Run Code Online (Sandbox Code Playgroud) 我一方面有一个现有网站,另一方面有一个 Angular 7 应用程序组件。
我想编辑现有的someusecase.html并重用我的 Angular 7 应用程序,例如
<html lang="en">
<head>
<meta charset="utf-8">
<title>How to import Angular 7 App?</title>
<base href="/">
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
<app-root></app-root>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我需要在 html 中包含什么才能使其工作?我正在寻找相当于以下内容的东西:
<script src="/ui/node_modules/angular/angular.min.js"></script>
<script src="/ui/components/Application.js"></script>
Run Code Online (Sandbox Code Playgroud)
换句话说,是否可以在<div>现有网页的范围内重用和激活 Angular 7 应用程序?
我有N个元素的未排序向量,想找到K个最小或最大的元素。预期K比K小N,但算法对于较大的K值(例如N的50-80%)也应有效。
按照重用Quicksort的思路进行思考将意味着完全使用第K个最小/最大元素作为分区的支点。但是找到第K个最小/最大值已经在计算OP的解决方案。
这是Quicksort的分区位:
template<typename T>
int partition(std::vector<T>& arr, int low, int high, T pivot) {
int i = (low - 1);
for (int j = low; j <= high - 1; ++j) {
if (arr[j] <= pivot) {
i++;
std::swap(arr[i], arr[j]);
}
}
std::swap(arr[i + 1], arr[high]);
return (i + 1);
}
Run Code Online (Sandbox Code Playgroud)
如果我知道该pivot值对应于第K个最小/最大值,则可以使用上面的分区来求解我的OP。
我想使用函数初始化构造一次性生成以下数字序列:
Array(0, 0, 0, 0, 3, 3, 6, 6, 9, 9, ..., n*3, n*3)
Run Code Online (Sandbox Code Playgroud)
一种方法是这样做:
Array.fill[Int](2)(0) ++ Array.tabulate(4)(_*3)
Run Code Online (Sandbox Code Playgroud)
但我需要将构造的第二部分的每个值加倍,即得到0, 0然后3, 3等等。如何复制第二个构造的值?
我也想不出能产生这种序列的数学函数。