小编hel*_*ter的帖子

在R中的data.table上撤消setkey()

我有一个data.table(data在下面)有10列(C1, ..., C10),我想删除重复的行.

我不小心使用了setkey(data,C1),所以现在当我运行时unique(data)我只获得基于列的唯一行C1,而我只想删除一行,如果它与所有列上的另一行相同C1, ..., C10.
有没有办法撤消setkey()操作?我发现了这个问题,但它没有帮助解决我的问题.

PS:我可以通过设置我的data.table键中的所有列来解决问题setkeyv(data, paste0("C", 1:10)),但这根本不是一个优雅/实用的解决方案.

r key duplicates data.table

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

通过matplotlib在Pycharm调试控制台中进行交互式绘图

我有一个python脚本,我正在尝试调试,我正在使用Pycharm Community Edition版本2016.3.2.

我想做的是在调试控制台中制作一些图(我通过设置断点并启动调试器来激活),但问题是图表根本没有出现.

这里的官方matplotlib文档中提供了一些代码来获得我的问题的可重现的示例,特别是这段代码:

import matplotlib.pyplot as plt
plt.ion()
plt.plot([1.6, 2.7])
Run Code Online (Sandbox Code Playgroud)

我觉得奇怪的是,如果我从pycharm内部打开一个新的python控制台,当执行此代码时,pycharm会弹出一个显示该图的新窗口,但如果我在"debug"控制台中粘贴相同的代码,则不会发生这种情况.

在这两种情况下,我都在控制台中获得以下输出

在此输入图像描述

我在这里发现了一个可能相关的帖子,但坦率地说,我无法判断这两个问题是否会减少到同一个问题.

python pycharm

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

选择矢量的所有元素,但dplyr管道中的元素除外

我想选择一个字符向量的所有元素,除了匹配特定字符的元素.
我可以轻松地完成它%in%,但我不知道如何在dplyr管道内执行此操作.

示例:
我想要的

names<-c("a","b","c","d","e")
names[!names %in% "c"]
 [1] "a" "b" "d" "e"
Run Code Online (Sandbox Code Playgroud)

我多么想要:

names<-c("a","b","c","d","e")
names %>% ...something...
Run Code Online (Sandbox Code Playgroud)

r vector dplyr

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

如何基于data.table中的分类变量以编程方式创建二进制列?

我有一个很大的(1200万行)data.table,看起来像这样:

library(data.table)
set.seed(123)
dt <- data.table(id=rep(1:3, each=5),y=sample(letters[1:5],15,replace = T))
> dt
    id y
 1:  1 b
 2:  1 d
 3:  1 c
 4:  1 e
 5:  1 e
 6:  2 a
 7:  2 c
 8:  2 e
 9:  2 c
10:  2 c
11:  3 e
12:  3 c
13:  3 d
14:  3 c
15:  3 a
Run Code Online (Sandbox Code Playgroud)

我想创建一个新的data.table包含我的变量id(这将是这个新的独特的键data.table)和其他5个二元变量每一个对应于每个类别的y内搭的值1,如果ID对于该值y,0否则.
输出data.table应如下所示:

   id a …
Run Code Online (Sandbox Code Playgroud)

r binary-data programmatically-created data.table

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

在R中比较elementwise时如何将NAs视为值

我想比较两个向量元素,以检查第一个向量中某个位置的元素是否与第二个向量中相同位置的元素不同.
关键是我NA在向量中有值,当对这些值进行比较时,我得到的NA不是TRUEFALSE.

可重复的例子:

这是我得到的:

a<-c(1, NA, 2, 2, NA)
b<-c(1, 1, 1, NA, NA)
a!=b
[1] FALSE   TRUE   NA   NA   NA  
Run Code Online (Sandbox Code Playgroud)

以下是我希望!=操作符的工作方式(将NA值视为变量的另一个"级别"):

a!=b
[1] FALSE   TRUE   TRUE   TRUE   FALSE
Run Code Online (Sandbox Code Playgroud)

这个链接上有一个可能的解决方案,但是这个人正在创建一个执行任务的功能.我想知道是否有更优雅的方式来做到这一点.

arrays r na

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