小编sja*_*obi的帖子

如何在R中的因子水平内进行中位数分裂?

在这里,我创建一个新列,以指示myData是高于还是低于其中位数

### MedianSplits based on Whole Data
#create some test data
myDataFrame=data.frame(myData=runif(15),myFactor=rep(c("A","B","C"),5)) 

#create column showing median split
myBreaks= quantile(myDataFrame$myData,c(0,.5,1))
myDataFrame$MedianSplitWholeData = cut(
    myDataFrame$myData,
    breaks=myBreaks, 
    include.lowest=TRUE,
    labels=c("Below","Above"))

#Check if it's correct
myDataFrame$AboveWholeMedian = myDataFrame$myData > median(myDataFrame$myData)
myDataFrame
Run Code Online (Sandbox Code Playgroud)

工作良好.现在我想做同样的事情,但计算myFactor每个级别的中位数分割.

我想出来了:

#Median splits within factor levels
byOutput=by(myDataFrame$myData,myDataFrame$myFactor, function (x) {
     myBreaks= quantile(x,c(0,.5,1))
     MedianSplitByGroup=cut(x,
       breaks=myBreaks, 
       include.lowest=TRUE,
       labels=c("Below","Above"))
     MedianSplitByGroup
     })
Run Code Online (Sandbox Code Playgroud)

byOutput包含我想要的东西.它正确地对因子A,B和C的每个元素进行分类.但是我想创建一个新列myDataFrame $ FactorLevelMedianSplit,它显示新计算的中值分割.

如何将"by"命令的输出转换为有用的数据框列?

我想也许"by"命令不是R-like方式来做这个...

更新:

有了Thierry如何巧妙地使用factor()的例子,并且在Spector的书中发现了"ave"函数,我发现了这个解决方案,它不需要额外的包.

myDataFrame$MediansByFactor=ave(
    myDataFrame$myData,
    myDataFrame$myFactor,
    FUN=median)

myDataFrame$FactorLevelMedianSplit = factor(
    myDataFrame$myData>myDataFrame$MediansByFactor, 
    levels = c(TRUE, FALSE), 
    labels = c("Above", "Below"))
Run Code Online (Sandbox Code Playgroud)

r median dataframe

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

从ghci用hoogle搜索时有没有办法使用标志?

在ghci中使用hoogle时如何使用hoogle命令行标志?

这显然不起作用:

ghci> :hoogle --count=5 Char -> Int
Could not read as type Int, "5 Char -> Int"
Run Code Online (Sandbox Code Playgroud)

haskell ghci hoogle

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

在检查BigInteger的可分性时,我应该使用mod还是余数?

BigInteger a某些人检查可分性时BigInteger b,我可以写a.mod(b).equals(BigInteger.ZERO)或者a.remainder(b).equals(BigInteger.ZERO).

哪两个表达式更有效?

编辑:有几个人正确地指出mod不接受负模数.请假设b您的答案是肯定的.

java biginteger

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

如何删除Haskell堆栈安装的旧构建计划?

如何删除堆栈工具安装的旧构建计划(GHC编译器和软件包)?

haskell haskell-stack

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

懒惰地连接了一系列列表

我想编写一个类似于List.concat/1的函数,它接受一个列表的可枚举,并将连接列表作为连续流发出.

它会像这样工作:

iex> 1..3 |> Stream.map(&([&1])) |> Enum.to_list
[[1], [2], [3]]
iex> 1..3 |> Stream.map(&([&1])) |> MyStream.concat |> Enum.to_list
[1, 2, 3]
Run Code Online (Sandbox Code Playgroud)

到目前为止我得出的是:

defmodule MyStream do
  def concat(lists) do
    Enumerable.reduce(lists, [], fn(x, acc) -> acc ++ x end)
  end
end
Run Code Online (Sandbox Code Playgroud)

这会产生正确的结果,但显然不是懒惰的.

我尝试使用Stream.Lazy但未成功但却无法理解它的内部工作原理.任何解释Stream.Lazy都将非常感谢!

stream elixir lazy-evaluation

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

Haskell:默认模块前缀

如果调用的Stack Haskell项目MyProject包含以下模块:

src\
   Foo1
   Foo2
   Bar\
       Foo3
Run Code Online (Sandbox Code Playgroud)

我想在所有模块名称中添加项目前缀,以帮助我将其与其他软件包中的其他导入模块区分开来,例如 MyProject.Bar.Foo3

我知道我可以的内容移动src到一个文件夹MyProject,然后前缀所有的模块MyProject.,但有没有办法与阴谋的文件要做到这一点,例如project-prefix=MyProject,或者其他的解决方案,这将使我同样的效果,而无需进行重组项目文件?

haskell

6
推荐指数
0
解决办法
85
查看次数

bytestring builder内部的type参数是什么?

核心数据类型Data.ByteString.Builder

newtype Builder = Builder (forall r. BuildStep r -> BuildStep r)

type BuildStep a = BufferRange -> IO (BuildSignal a)

data BuildSignal a =
    Done {-# UNPACK #-} !(Ptr Word8) a
  | BufferFull
      {-# UNPACK #-} !Int 
      {-# UNPACK #-} !(Ptr Word8)
                     (BuildStep a)
  | InsertChunk
      {-# UNPACK #-} !(Ptr Word8)
                     S.ByteString
                     (BuildStep a)
Run Code Online (Sandbox Code Playgroud)

类型参数(ra)用于什么目的?

haskell bytestring

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

构建haddocks时如何排除依赖关系?

有没有办法为特定的包构建 haddock 文档?我正在尝试单独为我的包/应用程序构建 haddocks,但以下命令似乎也为所有依赖项执行此操作:

stack haddock webservice
Run Code Online (Sandbox Code Playgroud)

webservice我的包/应用程序的名称在哪里)

haskell haddock haskell-stack

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

如何将字节数组转换为字符串?

我刚刚完成了霍夫曼压缩算法的创建。我使用 bytearray() 将压缩文本从字符串转换为字节数组。我正在尝试解压缩我的霍夫曼算法。但我唯一担心的是我无法将字节数组转换回字符串。是否有任何内置函数可以用来将我的字节数组(带有变量)转换回字符串?如果没有,是否有更好的方法将我的压缩字符串转换为其他内容?我尝试使用 byte_array.decode() 并得到以下结果:

print("Index: ", Index) # The Index


# Subsituting text to our compressed index

for x in range(len(TextTest)):

    TextTest[x]=Index[TextTest[x]]


NewText=''.join(TextTest)

# print(NewText)
# NewText=int(NewText)


byte_array = bytearray() # Converts the compressed string text to bytes
for i in range(0, len(NewText), 8):
    byte_array.append(int(NewText[i:i + 8], 2))


NewSize = ("Compressed file Size:",sys.getsizeof(byte_array),'bytes')

print(byte_array)

print(byte_array)

print(NewSize)

x=bytes(byte_array)
x.decode()
Run Code Online (Sandbox Code Playgroud)

UnicodeDecodeError:“utf-8”编解码器无法解码位置 0 中的字节 0x88:起始字节无效

python compression arrays huffman-code

6
推荐指数
1
解决办法
3万
查看次数

为什么带有指针接收器的方法在收到值时仍能工作?

我刚刚参加了Tour of Go中的练习51.该解释声称该Scale方法在接收到Vertex而不是指向a的指针时没有效果Vertex.

然而,当我改变声明v := &Vertex{3, 4},以v := Vertex{3, 4}main输出唯一的变化是丢失的&标记指针.

那么为什么Scale即使变量不是指针也改变它收到的变量?

methods pointers go

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