假设我有以下列表(注意非语法名称的用法)
list <- list(A = c(1,2,3),
`2` = c(7,8,9))
Run Code Online (Sandbox Code Playgroud)
因此,以下两种解析列表的方法有效:
`$`(list,A)
## [1] 1 2 3
`$`(list,`2`)
## [1] 7 8 9
Run Code Online (Sandbox Code Playgroud)
然而,这种方式继续失败。
id <- 2
`$`(list,id)
## NULL
Run Code Online (Sandbox Code Playgroud)
有人可以解释为什么最后一种方法不起作用以及我该如何解决它吗?谢谢。
我正在学习如何编写最大似然实现Julia,目前,我正在关注此材料(强烈推荐顺便说一句!)。\n所以问题是我不完全理解Julia 中的闭包是什么,也不知道什么时候应该实际使用它。即使在阅读了官方文档之后,这个概念对我来说仍然有点模糊。
例如,在教程中,我提到作者将对数似然函数定义为:
\nfunction log_likelihood(X, y, \xce\xb2)\n ll = 0.0\n @inbounds for i in eachindex(y)\n z\xe1\xb5\xa2 = dot(X[i, :], \xce\xb2)\n c = -log1pexp(-z\xe1\xb5\xa2) # Conceptually equivalent to log(1 / (1 + exp(-z\xe1\xb5\xa2))) == -log(1 + exp(-z\xe1\xb5\xa2))\n ll += y[i] * c + (1 - y[i]) * (-z\xe1\xb5\xa2 + c) # Conceptually equivalent to log(exp(-z\xe1\xb5\xa2) / (1 + exp(-z\xe1\xb5\xa2)))\n end\n ll\nend\nRun Code Online (Sandbox Code Playgroud)\n不过,后来他声称
\n\n我们写的对数似然是数据和参数的函数,但从数学上讲它应该只取决于参数。除了创建新函数的数学原因之外,我们只需要参数的函数,因为Optim 中的优化算法假设输入具有该属性。为了实现这两个目标,我们将构建一个 …
我想使用 ggplot按组获得镜像直方图,如下图所示。
library(ggplot2)
data2 <- data.frame(
type = c( rep("Top 1", n_segment),
rep("Top 2", n_segment),
rep("Bottom 1", n_segment),
rep("Bottom 2", n_segment)),
value = c( rnorm(n_segment, mean=5),
rnorm(n_segment, mean=12),
rnorm(n_segment, mean=-5),
rnorm(n_segment, mean=-12))
)
# Represent it
data2 %>%
ggplot( aes(x=value, fill=type)) +
geom_density( color="#e9ecef", alpha=0.6)
Run Code Online (Sandbox Code Playgroud)
现在我得到这个:
因此,我尝试使用布尔值从矩阵中选择元素,但我偶然发现了我无法理解的这种行为。\n考虑以下矩阵。
\nid = [1 1 2 2]\nx1 = [1 2 3 4 ]\nx2 = [5 6 7 8 ]\nX = transpose([x1 ; x2 ])\nRun Code Online (Sandbox Code Playgroud)\nX现在我想选择对应于 的所有元素id==1。这是一种方法。
X[ [true ,true, false ,false ] , : ]\n# 2\xc3\x972 Matrix{Int64}:\n# 1 5\n# 2 6\n\nRun Code Online (Sandbox Code Playgroud)\n但是,当我使用逻辑条件创建布尔值时,它无法产生所需的结果。
\nselect_row = isone.(transpose(id).==1) \nX[ select_row , : ]\n# 2\xc3\x971 Matrix{Int64}:\n# 1\n# 2\nRun Code Online (Sandbox Code Playgroud)\n知道发生了什么吗?先感谢您。
\n我想知道是否有与RStudiobrowser()中可用的语句等效的语句用于 Julia 的调试目的(我目前正在使用 Juno IDE)。
该R函数在被调用时browser()停止执行并调用 an 。environment browser因此,原则上,我们可以将browser()代码中的任何位置放置在该特定行中,并查看当时环境中存储的内容,这对于调试目的非常有用。
例如,下面的代码将在 时停止i>3。因此,这正是我们将environment browser在 RStudio 中看到的内容,我们将i=4在代码中观察到这一点。
for (i in 1:5) {
print(i)
if (i>3) {
browser()
}
}
[1] 1
[1] 2
[1] 3
[1] 4
Called from: eval(ei, envir)
Browse[1]>
Run Code Online (Sandbox Code Playgroud) 如何fo正确解析 R 公式对象 ( )(即解析时不将其转换为字符串)?
假设我有以下内容:
## Creating a formula object
fo <- y ~ x1 + x2 | 0 + z1 + z2 + z3 + z4 + z5
class(fo)
##[1] "formula"
typeof(fo)
##[1] "language"
strsplit(fo, split='|', fixed=TRUE)
##Error in strsplit(fo, split = "|", fixed = TRUE) : non-character argument
Run Code Online (Sandbox Code Playgroud)
希望我想将其解析为三个原子向量:
c("y").c("x1", "x2").c("z1", "z2", "z3", "z4", "z5")不包括0)。我试图在应用于两个向量时获得与Rs相同的行为==,以比较向量中的每个元素。
a <- c(1,2 ,3 )
b <- c(1, 2 ,5 )
a==b
#[1] TRUE TRUE FALSE
Run Code Online (Sandbox Code Playgroud)
我朱莉娅,我想出了一种非常笨拙的方法,但现在我想知道是否有最简单的方法。
a = [1 2 3 ]
b = [1 2 5 ]
a == b #this does not return what I want.
#false
rows_a =size(a)[2]
equal_terms =ones(rows_a)
for i in 1:rows_a
equal_terms[i] =(a[i] == b[i])
end
equal_terms
#1.0
#1.0
#0.0
Run Code Online (Sandbox Code Playgroud)
先感谢您。
假设我有矩阵d,它是二维(列)采样过程的两种不同实现(行)的结果。我想开发一个函数,从这个原始矩阵中创建完全对立的绘图。
c1 <- c(0.1, 0.6);c2 <- c(0.3, 0.8);d <- rbind(c1,c2)
# [,1] [,2]
# c1 0.1 0.6
# c2 0.3 0.8
Run Code Online (Sandbox Code Playgroud)
也就是说,例如,对于第一个实现(c(0.1, 0.6)),我想获得这个随机绘制在二维上的镜像,它生成了(2^2)如下 4 种可能的组合:
d1_anthi = matrix(
c( d[1,1] , d[1,2],
1 - d[1,1], d[1,2],
d[1,1] , 1 - d[1,2],
1 - d[1,1], 1 - d[1,2]), nrow=2,ncol=4)
t(d1_anthi)
# [,1] [,2]
# [1,] 0.1 0.6
# [2,] 0.9 0.6
# [3,] 0.1 0.4
# [4,] 0.9 0.4
Run Code Online (Sandbox Code Playgroud)
类似地,对于第二种,实现结果如下:
d2_anthi = matrix(
c( d[2,1] …Run Code Online (Sandbox Code Playgroud) 假设我有以下列表 ( result),它是一个嵌套列表,用于从模型中捕获信息:参数 ( betas) 及其标准误差 ( sd),此外还有一些关于全局模型 ( method) 和观察数量 ( n) 的信息。
我想拼合名单betas,并sd同时区分其中的每一个值x1和x2来自(即,如果它们是从betas或sd)。
请仔细考虑以下示例:
result<- list(n = 100,
method = "tree",
betas = list(x1 = 1.47,
x2 = -2.85),
sd = list(x1 = 0.55,
x2 = 0.25))
str(result)
# List of 4
# $ n : num 100
# $ iterations: num 50
# $ betas :List of 2
# ..$ …Run Code Online (Sandbox Code Playgroud)