小编JBJ*_*JBJ的帖子

生成总和为1的值组合,按降序排序

您是否知道一种更有效的方法来生成一个矩阵,该矩阵包含"权重"的所有唯一组合(让权重为w且0 <= w <= 1,并且w的值以0.1的步长分隔),使得权重总和一个,第一个是最高,最后一个是最低的重量.

这是完成工作的代码,但删除行似乎效率低下:

# generate combinations of weights such that w1 >= w2 >= w3 ...
w = seq(0, 1, 0.1) #weights 0, 0.1, ..., 0.9, 1
w = expand.grid(w, w, w, KEEP.OUT.ATTRS = FALSE) #all combinations of 3 weights
w = w[rowSums(w) == 1, ] #make sure the weights sum to one
w = w[!(w[, 1] < w[, 2] | w[, 2] < w[, 3]),] #make sure w1 >= w2 >= w3 ...

w    
#     Var1 …
Run Code Online (Sandbox Code Playgroud)

r

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

如何将计数器分配给由因子组合定义的data.frame的特定子集?

我的问题是:我有一个带有一些因子变量的数据框.我现在想为这个数据帧分配一个新的向量,它为这些因子变量的每个子集创建一个索引.

   data <-data.frame(fac1=factor(rep(1:2,5)), fac2=sample(letters[1:3],10,rep=T))
Run Code Online (Sandbox Code Playgroud)

给我一些类似的东西:

        fac1 fac2
     1     1    a
     2     2    c
     3     1    b
     4     2    a
     5     1    c
     6     2    b
     7     1    a
     8     2    a
     9     1    b
     10    2    c
Run Code Online (Sandbox Code Playgroud)

我想要的是一个组合计数器,它计算每个因子组合的出现次数.像这样

        fac1 fac2  counter
     1     1    a        1
     2     2    c        1
     3     1    b        1
     4     2    a        1
     5     1    c        1
     6     2    b        1
     7     1    a        2
     8     2    a        2
     9     1    b        2
     10    1    a …
Run Code Online (Sandbox Code Playgroud)

indexing combinations r tapply

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

如何:当 x 轴和 y 轴处于不同比例时自动设置固定坐标比 (coord_fixed)?

我的目标是通过 .ggplot2 修复绘图的坐标纵横比coord_fixed()。我认为coord_fixed(ratio=1)独立于 x 轴或 y 轴的比例完成了这项工作。我的直觉:参数ratio是指坐标x的总范围总范围的比值坐标y的。暗示比率为 1 总是意味着 x 轴将与图中的 y 轴一样长。

然而,对于 1000 秒的 x 坐标和 y 坐标(例如百分比),coord_fixed 的行为并不像我预期的那样。

2 问题:

  1. 你能解释一下为什么 coord_fixed 考虑了数据的实际比例而不是整个坐标长度吗?
  2. 我可以以编程方式更改 coord_fixed 以始终引用 x 和 y 坐标值的整个范围吗?

这是一个插图

library("ggplot2")
set.seed(123)
df = data.frame(x=runif(11)*1000,y=seq(0,.5,.05))
ggplot(df, aes(x,y)) +geom_point() +coord_fixed(1)
Run Code Online (Sandbox Code Playgroud)

产生 在此处输入图片说明

通过 coord-fixed 中 x 和 y 值的比率重新缩放数据解决了这个问题

ggplot(df, aes(x,y)) +geom_point() +coord_fixed(1*max(df$x)/max(df$y))
Run Code Online (Sandbox Code Playgroud)

然而,这不是程序性的。我必须df$x手动指定才能达到预期的效果。请参阅问题 2:是否有一种明智的方法可以coord_fixed根据我的 ggplot 图中 x/y 轴上的数据自动重新缩放坐标?

在此处输入图片说明

plot r aspect-ratio ggplot2

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

按列名选择列,但R中矩阵的每一行都有不同的名称?

假设我有一个矩阵,我想从column1为第一行选择值,column5为第二行选择值,column4为第三行(...).列作为列名存储在向量中,此向量中的位置等于要在其中选择列的行.

我怎样才能有效地实现这一目标,即不进行循环?

(背景是:我的目的是在模拟中使用它,这就是为什么我喜欢将其矢量化以加速它)

一个最小的例子:

    # Creating my dummy matrix
    aMatrix <-matrix(1:15,3,5,dimnames=list(NULL,LETTERS[1:5]))
    aMatrix
         A B C  D  E
    [1,] 1 4 7 10 13
    [2,] 2 5 8 11 14
    [3,] 3 6 9 12 15

    # Here are the columns I want for each row
    columns <-c("A","E","D")
    columns
    [1] "A" "E" "D"
    # means: select for row 1 column "A" = 1,
    # select for row 2 column "E" = 11,
    # select for row 3 column "D" = 12 …
Run Code Online (Sandbox Code Playgroud)

r

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

R bug(?)在函数x ^ 0.88中返回NaN但不是每手

我正在使用R 3.2.3并且会发生这种情况:函数返回NaN但手动相同的代码返回正确的结果.

有人可以向我解释这种行为吗?

func <- function(x)
{
    return(x^0.88)
}
func(-1) # [1] NaN

-1^0.88 # [1] -1
Run Code Online (Sandbox Code Playgroud)

r function

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

标签 统计

r ×5

aspect-ratio ×1

combinations ×1

function ×1

ggplot2 ×1

indexing ×1

plot ×1

tapply ×1