我知道列表理解会做到这一点,但我想知道是否有更短(和更多Pythonic?)的方法.
我想创建一系列不同长度的列表.每个列表将包含相同的元素e,重复n次(其中n =列表的长度).如何创建列表,而不做
__PRE__
对于每个清单?
df <- data.frame(var1 = c('a', 'b', 'c'), var2 = c('d', 'e', 'f'),
freq = 1:3)
Run Code Online (Sandbox Code Playgroud)
扩展上面data.frame的前两列的最简单方法是什么,以便每行显示"freq"列中指定的次数?
换句话说,从这里开始:
df
var1 var2 freq
1 a d 1
2 b e 2
3 c f 3
Run Code Online (Sandbox Code Playgroud)
对此:
df.expanded
var1 var2
1 a d
2 b e
3 b e
4 c f
5 c f
6 c f
Run Code Online (Sandbox Code Playgroud) 问题就是这一切.如果您有多个用户报告的错误,但没有记录日志中发生的错误,也不能重复该错误,无论您如何努力,您如何解决?甚至可以吗?
我相信你们当中很多人都会遇到这种情况.你在这种情况下做了什么,最终的结果是什么?
编辑:我对一个不可修复的错误做了什么感兴趣,而不是一个无法解决的错误.无法解决的错误使得您至少知道存在问题并且在大多数情况下具有搜索它的起点.如果是不可能的,你做什么?你甚至可以做任何事情吗?
我有一个庞大的MySQL数据库,让我们调用它live_db
,我想在同一台机器上复制它以提供一个测试系统来玩(test_db
),包括表结构和数据.我定期更新test_db
内容live_db
; 如果可能的增量.
MySQL中是否有一些内置机制可以做到这一点?我认为主从复制不是我想要的东西,因为它应该可以改变数据test_db
.但是,不必保留这些更改.
问候,
CGD
在文档中sapply
,replicate
有关于使用的警告...
现在,我可以接受它,但想了解它背后的原因.所以我创造了这个小小的人为例子:
innerfunction<-function(x, extrapar1=0, extrapar2=extrapar1)
{
cat("x:", x, ", xp1:", extrapar1, ", xp2:", extrapar2, "\n")
}
middlefunction<-function(x,...)
{
innerfunction(x,...)
}
outerfunction<-function(x, ...)
{
cat("Run middle function:\n")
replicate(2, middlefunction(x,...))
cat("Run inner function:\n")
replicate(2, innerfunction(x,...))
}
outerfunction(1,2,3)
outerfunction(1,extrapar1=2,3)
outerfunction(1,extrapar1=2,extrapar2=3)
Run Code Online (Sandbox Code Playgroud)
也许我已经做了一些明显可怕的错误,但我发现这个结果令人不安.所以任何人都可以向我解释为什么在上面的所有调用中outerfunction
,我得到了这个输出:
Run middle function:
x: 1 , xp1: 0 , xp2: 0
x: 1 , xp1: 0 , xp2: 0
Run inner function:
x: 1 , xp1: 0 , xp2: 0
x: 1 , xp1: 0 …
Run Code Online (Sandbox Code Playgroud) 我们想得到一个如下所示的数组:
1,1,1,2,2,2,3,3,3,4,4,4,1,1,1,2,2,2,3,3,3,4,4,4,1,1,1,2,2,2,3,3,3,4,4,4
Run Code Online (Sandbox Code Playgroud)
最简单的方法是什么?
在Perl中,我可以使用'x'运算符复制字符串:
$str = "x" x 5;
Run Code Online (Sandbox Code Playgroud)
我可以在Python中做类似的事情吗?
我定义了一个自定义函数,如下所示:
my.fun = function() {
for (i in 1:1000) {
...
for (j in 1:20) {
...
}
}
return(output)
}
Run Code Online (Sandbox Code Playgroud)
返回一个输出矩阵,output
由1000行和20列组成.
我需要做的是重复这个函数说5次并将五个output
结果存储到一个全新的矩阵中,比如说final
,但不使用另一个for循环(这样可以使代码更清晰,也是因为在第二个时刻我我想尝试并行化这些额外的5次重复).
因此final
应该是一个包含5000行和20列的矩阵(这5次重复的基本原理是在我使用的两个for循环中,以及其他函数中sample
).
我尝试使用final <- replicate(5, my.fun())
,正确计算了五个重复,但后来我必须"手动"将元素放入一个全新的5000 x 20矩阵中......有更好的方式吗?(也许用sapply()
?).非常感谢
有没有人知道replicate()函数在R中是如何工作的以及它相对于使用for循环的效率如何?
例如,......之间是否存在效率差异?
means <- replicate(100000, mean(rnorm(50)))
Run Code Online (Sandbox Code Playgroud)
和...
means <- c()
for(i in 1:100000) {
means <- c(means, mean(rnorm(50)))
}
Run Code Online (Sandbox Code Playgroud)
(我可能在上面略微打了一些东西,但你明白了.)
我试图在R中复制Stata输出.我正在使用数据集事务.我无法通过强大的标准错误复制probit函数.
Stata代码看起来像这样:
probit affair male age yrsmarr kids relig educ ratemarr, r
我开始时:
probit1 <- glm(affair ~ male + age + yrsmarr + kids + relig + educ + ratemarr,
family = binomial (link = "probit"), data = mydata)
Run Code Online (Sandbox Code Playgroud)
然后我尝试了对sandwich
包的各种调整,例如:
myProbit <- function(probit1, vcov = sandwich(..., adjust = TRUE)) {
print(coeftest(probit1, vcov = sandwich(probit1, adjust = TRUE)))
}
Run Code Online (Sandbox Code Playgroud)
或(与所有类型HC0
来HC5
):
myProbit <- function(probit1, vcov = sandwich) {
print(coeftest(probit1, vcovHC(probit1, type = "HC0"))
} …
Run Code Online (Sandbox Code Playgroud)