小编qed*_*qed的帖子

什么是二进制文件以及何时在 R 中使用 writeBin()

我无法理解二进制格式的性质及其在 R 中的用处,所以我做了一些实验:

在 R 中:

y1 = rbind(c('a', 'b'), c('c', 'd'))
write.table(y1, 'f1', quote=F, col.names=F, row.names=F)
conn = file('f2', 'wb')
writeBin('a b\nc d\n', conn)
close(conn)
Run Code Online (Sandbox Code Playgroud)

在 bash 中:

cat f1
# a b
# c d
cat f2
# a b
# c d
Run Code Online (Sandbox Code Playgroud)

这些看起来完全一样,但如果我区分它们:

diff f1 f2
# Binary files f1 and f2 differ
Run Code Online (Sandbox Code Playgroud)

diff 并没有告诉我有什么区别。

那么回到主题,什么是二进制文件(毕竟在 PC 上一切都是二进制文件),我应该在什么情况下在 R 中使用它?

r binaryfiles

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

R 中的对象可以有多个类吗?

假设我有一个这样的函数:

myf = function(x) {
res = dostuff(x)
res # this is a data.frame
}
Run Code Online (Sandbox Code Playgroud)

我想做一些特别的事情res,例如,我想制作一些通用函数,例如print.myf, summary.myf, ... ,这样我就可以继续给它一个类:

myf = function(x) {
res = dostuff(x)
class(res) = 'myf'
res
}
Run Code Online (Sandbox Code Playgroud)

但是这样我就不能再将它用作 data.frame 了。

oop r

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

R中多个类的方法相同

我经常遇到这样的场景,我希望两个类有相同的方法,当它们足够相似时.例如:

func.matrix = function(m) {
stopifnot(ncol(m) == 2)
c(mean(m[, 1]), sd(m[, 2]))
}

func.data.frame = function(m) {
stopifnot(ncol(m) == 2)
c(mean(m[, 1]), sd(m[, 2]))
}
Run Code Online (Sandbox Code Playgroud)

如何保存冗余?

r

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

如何自动生成c/c ++函数原型?

必须两次输入函数原型是很烦人的>是否有自动执行此操作的IDE?

例如,如何在Eclipse中使用CDT执行此操作?

基本上我要求3件事:

  1. 为定义的函数生成原型.
  2. 为已声明的原型生成功能片段.
  3. 如果原型或定义中的参数类型有任何变化,请保持它们同步.

c c++ eclipse ide

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

如何自动关闭Linux中的对话窗口?

我有时使用qt creator和vim进行c ++编程.当文件在vim中更改,焦点重新回到qt creator时,它会提示我接受或拒绝vim所做的更改,我一直选择yes.

据我所知,没有选项可以在qt creator中接受而不提示用户,所以我创建了一个bash脚本来解决这个问题:

#!/bin/bash

while true
do
    myw=$(xdotool getactivewindow)
    mywinprop=$(xprop -id ${myw})
    if [[ \
        $(echo "$mywinprop" | egrep 'NET_WM_NAME.*File Changed') && \
        $(echo "$mywinprop" | egrep 'WM_CLASS.*qtcreator') \
        ]]
    then
        xvkbd -xsendevent -text "\r" >/dev/null 2>&1
    else
        sleep 0.5
    fi
done
Run Code Online (Sandbox Code Playgroud)

它工作正常,出现提示对话然后很快消失,但它仍然很烦人.我想知道是否有更好的方法来做到这一点.(我已经提交了一个功能请求,但不确定他们是否会实现此功能.)

该解决方案可能适用于许多类似的情况.

bash user-interface automation

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

为什么不能对表达式中的R调用对象进行求值?(子集化与从调用对象中提取)

我试图了解R expression对象,但遇到了一些困难.

代码段:

a = 1
b = 2
x = expression(sin(a+b+1))
print(class(x[[1]][2]))
eval(x[[1]][2])
Run Code Online (Sandbox Code Playgroud)

结果:

#////////////////////////////////////////////////////
x = expression(sin(a+b+1))
#////////////////////////////////////////////////////
print(class(x[[1]][2]))
[1] "call"
#////////////////////////////////////////////////////
x = expression(sin(a+b+1))
#////////////////////////////////////////////////////
print(class(x[[1]][2]))
[1] "call"
#////////////////////////////////////////////////////
eval(x[[1]][2])
Error in eval(expr, envir, enclos) : attempt to apply non-function
2: eval(expr, envir, enclos)
1: eval(x[[1]][2])
Run Code Online (Sandbox Code Playgroud)

x[[1]][2]是一个call对象,但为什么不能评估它?

expression r object

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

使用emacs-jedi自动导入模块

使用ropemacs,您可以执行以下操作:

M-x rope-auto-import
Run Code Online (Sandbox Code Playgroud)

这会分析代码(我假设)并导入丢失的模块,例如,如果我写:

datetime.now()
Run Code Online (Sandbox Code Playgroud)

它应该通过添加此行来为我导入:

from datetime import datetime
Run Code Online (Sandbox Code Playgroud)

(它总是使用from ... import ...表格)

emacs-jedi中有类似的功能吗?

python emacs autocomplete python-jedi emacs-jedi

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

没有 deref 就无法实现副作用

来自 clojure 为勇敢而真实的人:

(defmacro enqueue
  [q concurrent-promise-name & work]
  (let [concurrent (butlast work)
        serialized (last work)]
    `(let [~concurrent-promise-name (promise)]
       (future (deliver ~concurrent-promise-name (do ~@concurrent)))
       (deref ~q)
       ~serialized
       ~concurrent-promise-name)))
(defmacro wait
  "Sleep `timeout` seconds before evaluating body"
  [timeout & body]
  `(do (Thread/sleep ~timeout) ~@body))
(time @(-> (future (wait 200 (println "'Ello, gov'na!")))
           (enqueue saying (wait 400 "Pip pip!") (println @saying))
           (enqueue saying (wait 100 "Cheerio!") (println @saying))))
Run Code Online (Sandbox Code Playgroud)

如果我注释掉该(deref ~q)行,则只有“Cheerio!” 被打印。为什么我需要在这里 deref 来获得其他副作用?

concurrency clojure

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

使用默认值初始化时的未绑定占位符参数

这是代码:

package scalafx.ensemble.example.charts

import javafx.scene.chart.PieChart.Data

import scala.util.Random
import scalafx.application.JFXApp
import scalafx.scene.Scene
import scalafx.Includes._
import scalafx.collections.ObservableBuffer
import scalafx.scene.chart.PieChart
import scalafx.scene.input.MouseEvent

object BasicPie extends JFXApp {
  // data level 1
  val pieChartDataBuffer: ObservableBuffer[Data] = ObservableBuffer(
    PieChart.Data("A", 20),
    PieChart.Data("B", 30),
    PieChart.Data("C", 10),
    PieChart.Data("D", 40)
  )

  pieChartDataBuffer.foreach(
    (data: Data) => data.node().onMouseClicked = {
      (_: MouseEvent) => pieChart.data = pieChartDataSubBuffer(data.name())
    }
  )

  val pieChart = new PieChart {
    data = pieChartDataBuffer
    title = "DrillDown Pie Chart"
  }

  // data level 2
  val pieChartDataSubBuffer: Map[String, ObservableBuffer[Data]] …
Run Code Online (Sandbox Code Playgroud)

scala

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

在Scala中构建类型类的不同方法?

从Scala编程书中获取的类型示例:

case class Address(street: String, city: String)
case class Person(name: String, address: Address)

trait ToJSON {
  def toJSON(level: Int = 0): String

  val INDENTATION = "  "
  def indentation(level: Int = 0): (String,String) = 
    (INDENTATION * level, INDENTATION * (level+1))
}

implicit class AddressToJSON(address: Address) extends ToJSON {
  def toJSON(level: Int = 0): String = {
    val (outdent, indent) = indentation(level)
    s"""{
      |${indent}"street": "${address.street}", 
      |${indent}"city":   "${address.city}"
      |$outdent}""".stripMargin
  }
}

implicit class PersonToJSON(person: Person) extends ToJSON {
  def toJSON(level: Int = …
Run Code Online (Sandbox Code Playgroud)

scala typeclass

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