小编Hei*_*erg的帖子

如果Python切片复制引用,为什么我不能用它来修改原始列表?

我知道切片列表不会生成列表中对象的副本;它只是复制对它们的引用。

但如果是这样的话,那为什么这行不通呢?

l = [1, 2, 3]

# Attempting to modify the element at index 1
l[0:2][-1] = 10

# but the attempt fails. The original list is unchanged
l
> [1, 2, 3]
Run Code Online (Sandbox Code Playgroud)

不应该l[0:2][-1]指向原始列表索引 1 处的元素吗?

python reference list

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

可能性太小的乘积 - R只给出0

我试图在R中计算这个后验分布.问题是分子是一堆dbern(p_i,y_i)<1的乘积,它太小了.(我的约是1500).因此,R吐出0,所有\ theta的后验值也为0.

为了澄清,每个y_i都有自己的p_i,这些p_i一起构成n个元素的n个元素的向量.每个theta都有自己的n元素向量p_i.

在此输入图像描述

一个可重复的例子(分子)

p <- sample(seq(0.001,0.999,by=0.01), 1500, replace=T)
y <- sample(c(0,1), 1500, replace=T)
dbern(y, p) # 1500-element vector, each element < 1
prod(dbern(y, p)) # produces 0
exp(sum(log(dbern(y, p)))) # produces 0
Run Code Online (Sandbox Code Playgroud)

编辑(上下文):我正在进行贝叶斯变换点分析(jstor.org/stable/25791783 - Western和Kleykamp 2004).与论文中的连续y不同,我的y是二元的,所以我在Albert和Chib(1993)中使用数据增强方法.使用该方法,y的可能性是伯努利,p = cdf-normal(x'B).

那么p如何依赖于theta?这是因为θ是变化点.其中一个x是时间虚拟 - 例如,如果θ= 10,那么对于第10天之后的所有观察,时间dummy = 1,并且对于第10天之前的所有观察,= 0.

因此,p取决于x,x取决于θ - 因此,p取决于θ.

我需要上面的数量,因为这是吉布斯采样中theta的完全条件.

statistics r

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

MySQL使用BETWEEN与NULL进行比较

我有一个查询,其中where条件如下:

WHERE A.event_date BETWEEN B.start_date AND B.end_date
Run Code Online (Sandbox Code Playgroud)

复杂性是,如果B.start_date是NULL,则意味着从远古时代开始,同样B.end_date是NULL,它意味着现在.所以,我还是要选择一排,其中A.event_date > B.start_dateB.end_dateNULL,例如.

这种冗长的方式是

WHERE A.event_date BETWEEN B.start_date AND B.end_date
   OR (A.event_date > B.start_date AND B.end_date IS NULL)
   OR (B.start_date IS NULL AND A.event_date < B.end_date)
Run Code Online (Sandbox Code Playgroud)

有没有更优雅的解决方案(特别是因为在一个查询中我有多个这样的条件)

mysql null between

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

dplyr bind_rows 不保留变量标签

haven::read_dta支持使用label属性将变量标签从 Stata 导入 R。Rstudio 还支持在视图窗格中显示这些标签。

但是,当使用dplyr::bind_rows(或rbind_all)绑定两个数据框时,不会保留标签。这是一个错误吗?

library(dplyr)
id <- 1:5
attr(id, "label") <- "unit id"

df1 <- tbl_df(data.frame(id)) # label is fine
df1$id
# [1] 1 2 3 4 5
# attr(,"label")
# [1] "unit id"

df2 <- tbl_df(data.frame(id)) # label is fine
df2$id
# [1] 1 2 3 4 5
# attr(,"label")
# [1] "unit id"

df_bound <- bind_rows(df1, df2) # label is gone
df_bound$id
# [1] 1 2 3 4 5 …
Run Code Online (Sandbox Code Playgroud)

r dplyr r-haven

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

为什么 Pandas DataFrame 的 [] (__getitem__) 有时选择列,有时选择行?

鉴于此数据框:

In [40]: df = pd.DataFrame({'A': [1, 1], 'B': [2, 2], 'C': [3, 3]})

In [41]: df
Out[41]:
   A  B  C
0  1  2  3
1  1  2  3
Run Code Online (Sandbox Code Playgroud)

如果我将字符串列表传递给[],它将过滤列:

In [42]: df[['A', 'C']]
Out[42]:
   A  C
0  1  3
1  1  3
Run Code Online (Sandbox Code Playgroud)

但是,如果我将布尔值列表传递给[],它将过滤行:

In [45]: df[[True, False]]
Out[45]:
   A  B  C
0  1  2  3
Run Code Online (Sandbox Code Playgroud)

有没有办法考虑这种差异,而不是“它就是这样”?

python pandas

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

如何将相同的命令应用于变量列表

我想对一堆变量应用t检验.下面是一些模拟数据

d <- data.frame(var1=rnorm(10), 
                var2=rnorm(10), 
                group=sample(c(0,1), 10, replace=TRUE))

# Is there a way to do this in some sort of loop?
with(d, t.test(var1~group))
with(d, t.test(var2~group))

# I tried this but the loop did not give a result!?
varnames <- c('var1', 'var2')
for (i in 1:2) {
  eval(substitute(with(d, t.test(variable~group)),
                  list(variable=as.name(varnames[i]))))  
}
Run Code Online (Sandbox Code Playgroud)

此外,是否可以从t检验的结果中提取值(例如,两个组均值,p值),以便循环将在变量之间产生一个整齐的平衡表?换句话说,我想要的最终结果不是一堆t测试,而是一个像这样的表:

Varname   mean1   mean2   p-value
Var1        1.1    1.2     0.989
Var2        1.2    1.3     0.912
Run Code Online (Sandbox Code Playgroud)

r apply

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

在演员阵容中不能使用`fill = NA`

我收到以下错误:

dcast(rep.data, country ~ variable, mean, fill=NA)

Error in vapply(indices, fun, .default) : values must be type 'logical',
but FUN(X[[4]]) result is type 'double'
Run Code Online (Sandbox Code Playgroud)

以下是rep.data上面的数据框:

structure(list(id = c("MRT1996", "BFA1982", "LBR1990", "UKR2000", 
"MNG1993", "VEN1992", "OMN1987", "LAO1996", "OMN1982", "SYR1993"
), wbcode = c("MRT", "BFA", "LBR", "UKR", "MNG", "VEN", "OMN", 
"LAO", "OMN", "SYR"), polcode = c("MAA", "BFO", "LBR", "UKR", 
"MON", "VEN", "OMA", "LAO", "OMA", "SYR"), country = c("Mauritania", 
"Burkina Faso", "Liberia", "Ukraine", "Mongolia", "Venezuela, RB", 
"Oman", "Lao PDR", "Oman", "Syrian Arab …
Run Code Online (Sandbox Code Playgroud)

r na

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

仅在使用RStudio时出现rJava包加载错误(可能是LD_LIBRARY_PATH问题)

我遇到了这个问题中讨论的相同错误消息,归结为:

Error : .onLoad failed in loadNamespace() for 'rJava', details:
  call: dyn.load(file, DLLpath = DLLpath, ...)
  error: unable to load shared object '/home/anh/Rlibs/rJava/libs/rJava.so':
  libjvm.so: cannot open shared object file: No such file or directory
Run Code Online (Sandbox Code Playgroud)

问题是,在答案之后(即设置LD_LIBRARY_PATH指向libjvm.so)在命令行中解决了我的问题R,但Rstudio libjvm.so仍然无法找到.

系统规格:Ubuntu 14.04,R 3.1.1,Rstudio Desktop 0.98,apt-get install r-cran-rjava完成

r rjava rstudio

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

大熊猫的子操作员做什么?

这是直接来自教程,即使在阅读文档之后我也无法理解.

In [14]: df = DataFrame({'one' : Series(randn(3), index=['a', 'b', 'c']),
   ....:                 'two' : Series(randn(4), index=['a', 'b', 'c', 'd']),
   ....:                 'three' : Series(randn(3), index=['b', 'c', 'd'])})
   ....: 

In [15]: df
Out[15]: 
        one     three       two
a -0.626544       NaN -0.351587
b -0.138894 -0.177289  1.136249
c  0.011617  0.462215 -0.448789
d       NaN  1.124472 -1.101558

In [16]: row = df.ix[1]

In [17]: column = df['two']

In [18]: df.sub(row, axis='columns')
Out[18]: 
        one     three       two
a -0.487650       NaN -1.487837
b  0.000000  0.000000  0.000000
c  0.150512  0.639504 -1.585038 …
Run Code Online (Sandbox Code Playgroud)

python pandas

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

R的download.file的“内部方法”是什么?

我正在尝试使用 下载以下数据集download.file,该数据集仅在method = "wget")时有效

# Doesn't work
download.file('http://uofi.box.com/shared/static/bba3968d7c3397c024ec.dta', tempfile(), method = "auto")
download.file('http://uofi.box.com/shared/static/bba3968d7c3397c024ec.dta', tempfile(), method = "curl")

# Works
download.file('http://uofi.box.com/shared/static/bba3968d7c3397c024ec.dta', tempfile(), method = "wget")
Run Code Online (Sandbox Code Playgroud)

根据help(download.file)

如果选择 method = "auto"(默认),则为 file:// URL 选择内部方法,而对于其他提供的功能(“http/ftp”)为 true(几乎总是如此)。

看源码,“内部方法”指的是:

if (method == "internal") {
        status <- .External(C_download, url, destfile, quiet, 
            mode, cacheOK)
        if (!quiet) 
            flush.console()
    }
Run Code Online (Sandbox Code Playgroud)

但我仍然不知道.External(C_download)会发生什么,尤其是跨平台。对我来说,了解这一点而不是依赖它很重要,wget因为我正在编写一个应该跨平台工作的包。

r download

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

标签 统计

r ×6

python ×3

pandas ×2

apply ×1

between ×1

download ×1

dplyr ×1

list ×1

mysql ×1

na ×1

null ×1

r-haven ×1

reference ×1

rjava ×1

rstudio ×1

statistics ×1