小编Dre*_*rey的帖子

as.character在函数上的用法

我偶然发现了一个问题:

temp.fun <- function() {}
as.character(temp.fun)
Run Code Online (Sandbox Code Playgroud)

产生错误.我说,为什么不可能将一个函数"转换"为一个字符.问题是,要添加到函数中的属性是什么,以便该方法as.character返回自己定义的字符串?

非常感谢!

r function

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

投票/排名排名对方法

目前我尝试了解Ranked Pairs方法.从维基百科条目我不知道如何创建成对比较矩阵.这个解释帮助我理解了比较两对的一种方法 - 但是,我不确定这是否与wiki中说的完全相同.第一个问题是,对在比较是否2根据是有效的1

我设法将2中的解释改编为R代码:

在下面的(不切实际的)例子中,候选人(行)比选民(列)更多,但所有选民都给每个候选人排名(完整排名)

# some random example
random.example <- matrix(rnorm(50), ncol = 5, 
                         dimnames = list(candidates = paste("c", 1:10, sep=""), 
                                         voters = paste("v", 1:5, sep="")))
rmat <- apply(random.example, MARGIN = 2, rank, ties.method = "f")
Run Code Online (Sandbox Code Playgroud)

然后使用Ranked Pairs方法对秩矩阵进行排序

pm <- apply(rmat , MARGIN=1, function(x) {
  return(apply(rmat , MARGIN=1, function(y) {
    return(sum(x > y) - sum(x < y))
  }))
})

sorted <- apply(pm , MARGIN=1, function(x, numberOfVoters) {
  return(c(like …
Run Code Online (Sandbox Code Playgroud)

implementation r ranking voting-system

5
推荐指数
0
解决办法
680
查看次数

如何在嵌套箱线图中添加中间空间ggplot2

我想使用该stats_summary方法在箱形图组之间添加一个边际空间。

这是我的问题的一个小例子

library(ggplot2)
library(reshape2)
data1 <- (lapply(letters[1:5], function(l1) return(matrix(rt(5*3, 1), nrow = 5, ncol = 3, dimnames = list(cat2=letters[6:10], cat3=letters[11:13])))))
names(data1) <- letters[1:5]
data2 <- melt(data1)

customstats <- function(x) {
  xs <- sort(x)
  return(c(ymin=min(x), lower= mean(xs[xs < mean(x)]), middle = mean(x) , upper = mean(xs[xs > mean(x)]), ymax=max(x)))
}

ggplot(data2, aes(x=cat2, y=value, fill=cat3), width=2) + 
  stat_summary(fun.data = customstats, geom = "boxplot", 
    alpha = 0.5, position = position_dodge(1), mapping = aes(fill=cat3))
Run Code Online (Sandbox Code Playgroud)

结果是下图。 箱线图

我想为每个“cat2”实现视觉分离,并在箱线图组之间添加一个“空间”(stats_summary由于我有自定义统计数据,因此我限制使用)。我该怎么做?

r ggplot2 boxplot

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

使用`rowSums`在`dplyr`中变换列

最近我偶然发现了一个奇怪的行为,dplyr如果有人提供一些见解,我会很高兴.

假设我有一个com列包含一些数值的数据.在一个简单的场景中,我想计算rowSums.虽然有很多方法可以做,但这里有两个例子:

df <- data.frame(matrix(rnorm(20), 10, 2),
                 ids = paste("i", 1:20, sep = ""),
                 stringsAsFactors = FALSE)

# works
dplyr::select(df, - ids) %>% {rowSums(.)}

# does not work
# Error: invalid argument to unary operator
df %>%
  dplyr::mutate(blubb = dplyr::select(df, - ids) %>% {rowSums(.)})

# does not work
# Error: invalid argument to unary operator
df %>%
  dplyr::mutate(blubb = dplyr::select(., - ids) %>% {rowSums(.)})

# workaround:
tmp <- dplyr::select(df, - ids) %>% {rowSums(.)}
df %>%
  dplyr::mutate(blubb …
Run Code Online (Sandbox Code Playgroud)

r dplyr

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

可变相互作用的计算(矩阵中向量的点积)

如果我将一个向量x(1,n)与它自身相乘,即np.dot(x.T, x)我将获得二次形式的矩阵.

如果我有一个矩阵Xmat(k,n),我怎样才能有效地计算行方点积并只选择上三角形元素?

所以,atm.我有以下解决方案:

def compute_interaction(x):
    xx = np.reshape(x, (1, x.size))
    return np.concatenate((x, np.dot(xx.T, xx)[np.triu_indices(xx.size)]))
Run Code Online (Sandbox Code Playgroud)

然后compute_interaction(np.asarray([2,5]))屈服array([ 2, 5, 4, 10, 25]).

当我有一个矩阵我用

np.apply_along_axis(compute_interaction, axis=1, arr = np.asarray([[2,5], [3,4], [8,9]]))
Run Code Online (Sandbox Code Playgroud)

产生我想要的东西:

array([[ 2,  5,  4, 10, 25],
       [ 3,  4,  9, 12, 16],
       [ 8,  9, 64, 72, 81]])
Run Code Online (Sandbox Code Playgroud)

有没有其他方法来计算这个使用apply_along_axis?也许用np.einsum

python numpy vector dot-product numpy-einsum

5
推荐指数
0
解决办法
110
查看次数

在 R 中绘制圆圈

我正在使用 plotrix 包来绘制圆圈。

而且我不明白我的代码有什么问题...... :-(

我有三分。第一个点(1,1)应该是圆的中心。以下两点(1,4),并(4,1)具有相同的距离/半径的中心。所以图中的圆圈应该经过这些点,对吧?

而且我不知道为什么圆圈看起来不对。有解释吗?

  p1 <- c(1,1)
  p2 <- c(4,1)
  p3 <- c(1,4)
  r <- sqrt(sum((p1-p2)^2))

  plot(x=c(p1[1], p2[1], p3[1]),
       y=c(p1[2], p2[2], p3[2]), 
       ylim=c(-5,5), xlim=c(-5,5))
  draw.circle(x=p1[1], y=p1[2], radius=(r))
  abline(v=-5:5, col="#0000FF66")
  abline(h=-5:5, col="#0000FF66")
Run Code Online (Sandbox Code Playgroud)

这里查看生成的输出

plot r plotrix

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

通过API调用获取文件(R和管道工)

我将水管工用作一些R函数的简单Web API服务。

我想通过R函数提供文件“下载”(在客户端),就像flask在python中通过send_file和send_from_directory进行操作一样

我试过了

#* @get /datafile
get_file <- function(){
  return(file('path-to-file.RData'))
}
Run Code Online (Sandbox Code Playgroud)

但不幸的是,它无法正常工作(因为返回值无法转换为JSON)。我知道plubmer中静态文件服务器选项,但是我真的只想提供一个文件而不是目录。(尽管通过目录提供文件@assets似乎是一个更安全的选择。)

r file asp.net-web-api plumber

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

计算随机矩阵的特征值/特征向量

我很难确定马尔可夫模型的平稳分布。我开始理解理论和联系:给定一个随机矩阵,要确定平稳分布,我们需要找到最大特征值(即 1)的特征向量

我从生成一个随机矩阵开始

set.seed(6534)
stoma <- matrix(abs(rnorm(25)), nrow=5, ncol=5)
stoma <- (stoma)/rowSums(stoma) # that should make it a stochastic matrix rowSums(stoma) == 1
Run Code Online (Sandbox Code Playgroud)

之后我使用Reigen函数

ew <- eigen(stoma)
Run Code Online (Sandbox Code Playgroud)

但我不明白结果

> ew
$values
[1]  1.000000e+00+0.000000e+00i -6.038961e-02+0.000000e+00i -3.991160e-17+0.000000e+00i
[4] -1.900754e-17+1.345763e-17i -1.900754e-17-1.345763e-17i

$vectors
              [,1]           [,2]          [,3]                  [,4]                  [,5]
[1,] -0.4472136+0i  0.81018968+0i  0.3647755+0i -0.0112889+0.1658253i -0.0112889-0.1658253i
[2,] -0.4472136+0i  0.45927081+0i -0.7687393+0i  0.5314923-0.1790588i  0.5314923+0.1790588i
[3,] -0.4472136+0i  0.16233945+0i  0.2128250+0i -0.7093859+0.0000000i -0.7093859+0.0000000i
[4,] -0.4472136+0i -0.09217315+0i  0.4214660+0i -0.1305497-0.1261247i -0.1305497+0.1261247i
[5,] -0.4472136+0i -0.31275073+0i -0.2303272+0i  0.3197321+0.1393583i  0.3197321-0.1393583i
Run Code Online (Sandbox Code Playgroud)

最大值 (1) 的向量具有所有相同的分量值“-0.4472136”。即使我改变种子,绘制不同的数字,我也会再次得到相同的值。我想念什么?为什么特征向量的分量都是相等的?为什么它们的总和不等于 1 …

r eigenvalue eigenvector markov-models

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

在R中制作特定的分位数图

我对下面的可视化(Decile术语)非常感兴趣

在此输入图像描述

我想知道如何在R中做到这一点.

当然有直方图和密度图,但它们没有做出如此好的可视化.特别是,我想知道是否可以用ggplot/ 来做tidyverse.

编辑以响应评论, library(dplyr) library(ggplot2) someData <- data_frame(x = rnorm(1000)) ggplot(someData, aes(x = x)) + geom_histogram() 这会生成一个直方图(参见http://www.r-fiddle.org/#/fiddle?id=LQXazwMY&version=1)

但我怎么能得到coloful酒吧?如何实现小矩形?(箭头不太相关).

visualization r data-visualization ggplot2

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