您是否知道一种更有效的方法来生成一个矩阵,该矩阵包含"权重"的所有唯一组合(让权重为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) 我的问题是:我有一个带有一些因子变量的数据框.我现在想为这个数据帧分配一个新的向量,它为这些因子变量的每个子集创建一个索引.
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) 我的目标是通过 .ggplot2 修复绘图的坐标纵横比coord_fixed()。我认为coord_fixed(ratio=1)独立于 x 轴或 y 轴的比例完成了这项工作。我的直觉:参数ratio是指坐标x的总范围与总范围的比值坐标y的。暗示比率为 1 总是意味着 x 轴将与图中的 y 轴一样长。
然而,对于 1000 秒的 x 坐标和 y 坐标(例如百分比),coord_fixed 的行为并不像我预期的那样。
2 问题:
这是一个插图
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 轴上的数据自动重新缩放坐标?

假设我有一个矩阵,我想从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.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)