小编Pol*_*ase的帖子

将dplyr连接语法转换为纯data.table语法

我正在学习data.table.我很难转换dplyr连接语法.您能为以下测试用例推荐data.table等价吗?

library(data.table)
library(dplyr)

dtProduct <- data.table(
    ProductID  = c(6, 33, 17, 88, 44, 51),
    ProductName= c("Shirt", "Helmet", "Gloves", "Towel", "Chair", "Detergent"),
    Price= c(25, 60, 10, 7.5, 135, 16),
    key = 'ProductID'
)

set.seed(20141216)
dtOrder <- data.table(
    OrderID    = sample(1001:9999, 12),
    CustomerID = sample(271:279, 12, replace=TRUE),
    # NOTE: some non-existent ProductID intentionally introduced
    ProductID  = sample(c(dtProduct[, ProductID], 155, 439), 12, replace=TRUE),
    Qty = sample(1:3, 12, replace=TRUE),
    key = 'OrderID'
)

> tables()
     NAME      NROW NCOL MB COLS                             KEY      
[1,] dtOrder     12 …
Run Code Online (Sandbox Code Playgroud)

join r dplyr data.table

4
推荐指数
2
解决办法
470
查看次数

data.table笛卡尔加入合法连接的警告

我很抱歉提前发帖混淆了几个问题.如果不合适,请编辑或建议我应该做什么.我正在练习data.table join,这是一个想象的场景:

"两个机器人,每个机器人在MovementA有4个位置,在MovementB有4个位置.要解决的问题:对于每个机器人,从MoveA到MoveB,有4x4个可能的位置对找到最短距离的4对"

数据设置

library(data.table)

set.seed(20141220)
dtMoveA = data.table(RobotID = rep(1:2, each=4), Position=sample(1:20, 8))
dtMoveB = data.table(RobotID = rep(1:2, each=4), Position=sample(1:20, 8))

# Review Data
rbind(cbind(Movement="Move-A", dtMoveA), cbind(Movement="Move-B", dtMoveB))

    Movement RobotID Position
 1:   Move-A       1       18
 2:   Move-A       1       20
 3:   Move-A       1       15
 4:   Move-A       1        8
 5:   Move-A       2       13
 6:   Move-A       2        2
 7:   Move-A       2        9
 8:   Move-A       2       12
 9:   Move-B       1       18
10:   Move-B       1       14
11:   Move-B       1       13
12:   Move-B       1       17 …
Run Code Online (Sandbox Code Playgroud)

join r cartesian-product data.table

4
推荐指数
1
解决办法
244
查看次数

docker-compose 如何像 docker run 中一样定义容器范围的网络?

运行 2 个容器,其中mycontainer2必须使用相同的网络堆栈mycontainer1。就好像两个容器在同一台机器上运行一样。docker run这是我尝试使用--network container:xxx来实现的方法

$ docker run -it --rm --name mycontainer1 -p 6666:7777 myregistry/my-container1:latest

$ docker run -it --rm --network container:mycontainer1 --name mycontainer2 myregistry/my-container2:latest
Run Code Online (Sandbox Code Playgroud)

我尝试使用docker-compose以下命令来复制此行为。但网络:的定义docker-compose.yaml并不表示与--network container:xxx的选项等效的内容docker run。是否可以docker-compose配置两个容器使用相同的网络堆栈?

docker docker-compose docker-network

4
推荐指数
1
解决办法
5178
查看次数

Powershell脚本,使用MSDeploy.exe创建文件夹,网站和部署

我想在Windows 2008 R2上部署Web应用程序.我知道单独的PowerShell命令可以执行各种任务.但我想把它放到一个很好的PowerShell脚本中.

我只需要语法,请你帮我做下面的动作:

  1. 测试C:\Inetpub\MyWebsite文件夹是否存在,如果不存在,则创建它.

  2. 在IIS7中测试是否MyWebsite存在,如果没有创建它(我知道如何Import-Module WebAdministration调用New-WebSite)

  3. 现在复杂的部分.我从Visual Studio 2010准备的软件包中部署了一个Web站点.VS提供了一个.cmd文件,我只需要在DOS提示符下执行它.这意味着我必须离开PS控制台,打开DOS控制台来运行该cmd文件.是否可以.cmd从PowerShell控制台中运行文件?

powershell iis-7 powershell-2.0

2
推荐指数
1
解决办法
6425
查看次数

为什么"rebase --onto ABC"与"rebase ABC"不同?

使用git 2.11,git rebase文档说:

如果提供了--onto选项,则当前分支将重置为<upstream>或<newbase>.这与git reset --hard(或)具有完全相同的效果.ORIG_HEAD设置为在重置之前指向分支的尖端.

我理解它upstream并且newbase指向相同的"基本引用",这意味着下面的两个rebase语法是等价的:

git rebase ABC
git rebase --onto ABC
Run Code Online (Sandbox Code Playgroud)

这是我设置的演示.让我们假设当前分支是FeatureABC与远程分支完全同步.

#---create two identical branches, behind current branch by 5 commits
(FeatureABC) git branch Demo1-Rebase-ABC      HEAD~4
(FeatureABC) git branch Demo2-Rebase-onto-ABC HEAD~4

#---Make a new commit in branch Demo1
git checkout Demo1-Rebase-ABC
echo "Demo of: git rebase FeatureABC Demo1-Rebase-ABC" > ./Demo1_BogusFile.txt
git add ./Demo1_BogusFile.txt
git commit -m "Create file Demo1_BogusFile.txt"

git rebase FeatureABC
Run Code Online (Sandbox Code Playgroud)

首先,倒带头重播你的工作
...应用:创建文件Demo1_BogusFile.txt

git log --oneline -3 …

git git-rebase

2
推荐指数
1
解决办法
688
查看次数

“跨越异步边界”的含义

来自Akka文档,流水线和并行性

默认情况下,将Akka Streams处理阶段(即Flow和Source或图形结点上的简单运算符)“融合”在一起,并按顺序执行。这避免了跨越异步边界的事件的开销,但将流程限制为在任何给定时间最多执行一个阶段。

跨越异步边界事件是什么意思?

《两个莫妮克斯流的传说》和相应的幻灯片中也经常使用相同的术语

streaming asynchronous akka

2
推荐指数
1
解决办法
281
查看次数

空List平等如何工作?

==运营商是否真的按内容比较List?特别是关于空列表?

以下比较按预期工作

List("A", "B", "C") == "ABC".split("").toList // true
List() == List() // true
List.empty[String] == List.empty[String] // true
Run Code Online (Sandbox Code Playgroud)

但是,不同类型的空列表比较会产生令人困惑的结果:

List.empty[String] == List.empty[Int] // true: on different types?
Run Code Online (Sandbox Code Playgroud)

编辑:在最初的问题,我做了一个误导性的测试案例,安德烈已经澄清了.谢谢.转载于此

val emptyStrSplit = "".split("").toList // List("") and not List() as displayed in Console
List.empty[String] == emptyStrSplit // false: b/c List() != List("")
Run Code Online (Sandbox Code Playgroud)

types scala equality equals subtyping

2
推荐指数
1
解决办法
128
查看次数

使用 SIZE 列出 Kubernetes 集群中的容器镜像(如 docker image ls)

在 Kubernetes 文档列出集群中运行的所有容器映像中,我们可以通过以下方式列出所有容器:

kubectl get pods --all-namespaces -o jsonpath="{..image}" |\
tr -s '[[:space:]]' '\n' |\
sort |\
uniq -c
Run Code Online (Sandbox Code Playgroud)

下面是一个输出示例:

  1 cdkbot/addon-resizer-amd64:1.8.1
  1 cdkbot/hostpath-provisioner-amd64:1.0.0
  1 cdkbot/registry-amd64:2.6
  1 coredns/coredns:1.6.6
  1 docker.io/cdkbot/addon-resizer-amd64:1.8.1
  1 docker.io/cdkbot/hostpath-provisioner-amd64:1.0.0
  1 docker.io/cdkbot/registry-amd64:2.6
  1 docker.io/coredns/coredns:1.6.6
  1 docker.io/grafana/grafana:6.4.3
  2 docker.io/istio/citadel:1.5.1
  2 docker.io/istio/examples-bookinfo-details-v1:1.15.0
  2 docker.io/istio/examples-bookinfo-productpage-v1:1.15.0
  2 docker.io/istio/examples-bookinfo-ratings-v1:1.15.0
  2 docker.io/istio/examples-bookinfo-reviews-v1:1.15.0
  2 docker.io/istio/examples-bookinfo-reviews-v2:1.15.0
  2 docker.io/istio/examples-bookinfo-reviews-v3:1.15.0
  2 docker.io/istio/galley:1.5.1
  4 docker.io/istio/kubectl:1.5.1
  4 docker.io/istio/mixer:1.5.1
  2 docker.io/istio/pilot:1.5.1
 34 docker.io/istio/proxyv2:1.5.1
  2 docker.io/istio/sidecar_injector:1.5.1
  2 docker.io/jaegertracing/all-in-one:1.16
  1 docker.io/kubernetesui/dashboard:v2.0.0
  1 docker.io/kubernetesui/metrics-scraper:v1.0.4
  2 docker.io/library/nginx:latest
  2 docker.io/prom/prometheus:v2.12.0
  1 docker.io/radial/busyboxplus:curl
  1 grafana/grafana:6.4.3 …
Run Code Online (Sandbox Code Playgroud)

kubernetes kubectl

2
推荐指数
2
解决办法
4119
查看次数

pod定义中重复的env变量名称,确定最终值的优先规则是什么?

使用 Kubernetes 1.19.3,我使用 3 种不同的方式初始化 env 变量值:

  • env pod 定义中具有显式键/值的字段
  • envFrom使用configMapRefsecretRef

当一个键名重复时,如下例所示,DUPLIK1DUPLIK2用不同的值多次定义。

Kubernetes 用于将最终值分配给变量的优先规则是什么?

# create some test Key/Value configs and Key/Value secrets
kubectl create configmap myconfigmap --from-literal=DUPLIK1=myConfig1 --from-literal=CMKEY1=CMval1 --from-literal=DUPLIK2=FromConfigMap -n mydebugns

kubectl create secret generic mysecret --from-literal=SECRETKEY1=SECval1 --from-literal=SECRETKEY2=SECval2 --from-literal=DUPLIK2=FromSecret -n mydebugns

# create a test pod
cat <<EOF | kubectl apply -n mydebugns -f -
apiVersion: v1
kind: Pod
metadata:
  name: pod1
spec:
  containers:
    - name: container1
      image: busybox
      command: [ …
Run Code Online (Sandbox Code Playgroud)

kubernetes kubernetes-pod configmap

2
推荐指数
1
解决办法
257
查看次数

为什么For Comprehension生成器抑制Option类型?

在下面的代码中,版本1给出了正确的结果.我在V2中做了一个小变化.无值已经消失,这是好的,因为这是For Expression的工作方式.但是什么原因导致V2中的yield输出不再尊重myList.lift()返回的数据类型,这是一个Option(如V1所示)?

val myList = List(12, 34, "ABC")
Run Code Online (Sandbox Code Playgroud)

版本1

for { i <- (0 to 3).toList } yield myList.lift(i)
// res1: List[Option[Any]] = List(Some(12), Some(34), Some(ABC), None)
Run Code Online (Sandbox Code Playgroud)

版本2

for { 
  i <- (0 to 3).toList 
  x <- myList.lift(i)
} yield x
// res2: List[Any] = List(12, 34, ABC)
Run Code Online (Sandbox Code Playgroud)

scala for-comprehension

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

Scala List链式cons运算符vs List构造函数

两个List构造在编译/内存占用方面是否相同?

val list1 = x1 :: x2 :: x3 :: Nil
val list2 = List(x1, x2, x3)
Run Code Online (Sandbox Code Playgroud)

我认为list1更昂贵,因为每个h :: t创建一个List,然后连接每个新元素(产生一个新列表)直到最终列表.同时list2创建一个List.

scala

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

空集是否为NonEmpty集的子集?

让我们想象一个bigset.containSubset(smallset)返回true/false 的函数

结果如何应用于以下边缘情况:

  • 这两个bigsetsmallset是空的
  • bigset是非smallset空的并且是空的

如果我任意定义"如果两个集合的交集给出的结果与较小的集合相同,那么它smallset就是一个子集".然后答案是true针对上述两种情况.这是正确的假设吗?

scala> Set().intersect(Set())
res1: scala.collection.immutable.Set[Nothing] = Set()

scala> Set(1,2,3).intersect(Set())
res2: scala.collection.immutable.Set[Int] = Set()
Run Code Online (Sandbox Code Playgroud)

scala

0
推荐指数
1
解决办法
328
查看次数

System.nanoTime/System.currentTimeMillis = 107(这应该是1e6吗?)

根据java.lang.System API

currentTimeMillis()以毫秒为单位返回当前时间

nanoTime()返回正在运行的Java虚拟机的高分辨率时间源的当前值,以纳秒为单位.

严格来说,纳秒是1e-9,毫秒是1e-3.因此,以纳秒为单位的持续时间必须是相同持续时间的1e6的倍数(以毫秒为单位).实际情况并非如此,原因是什么?

scala> System.nanoTime / System.currentTimeMillis
res0: Long = 107
Run Code Online (Sandbox Code Playgroud)

java scala

-3
推荐指数
1
解决办法
482
查看次数