我偶然发现了一个问题:
temp.fun <- function() {}
as.character(temp.fun)
Run Code Online (Sandbox Code Playgroud)
产生错误.我说,为什么不可能将一个函数"转换"为一个字符.问题是,要添加到函数中的属性是什么,以便该方法as.character返回自己定义的字符串?
非常感谢!
目前我尝试了解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) 我想使用该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由于我有自定义统计数据,因此我限制使用)。我该怎么做?
最近我偶然发现了一个奇怪的行为,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) 如果我将一个向量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?
我正在使用 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)
在这里查看生成的输出
我将水管工用作一些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似乎是一个更安全的选择。)
我很难确定马尔可夫模型的平稳分布。我开始理解理论和联系:给定一个随机矩阵,要确定平稳分布,我们需要找到最大特征值(即 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 …
我对下面的可视化(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酒吧?如何实现小矩形?(箭头不太相关).
r ×8
ggplot2 ×2
boxplot ×1
dot-product ×1
dplyr ×1
eigenvalue ×1
eigenvector ×1
file ×1
function ×1
numpy ×1
numpy-einsum ×1
plot ×1
plotrix ×1
plumber ×1
python ×1
ranking ×1
vector ×1