我有一个data.table
(data
在下面)有10列(C1, ..., C10
),我想删除重复的行.
我不小心使用了setkey(data,C1)
,所以现在当我运行时unique(data)
我只获得基于列的唯一行C1
,而我只想删除一行,如果它与所有列上的另一行相同C1, ..., C10
.
有没有办法撤消setkey()
操作?我发现了这个问题,但它没有帮助解决我的问题.
PS:我可以通过设置我的data.table
键中的所有列来解决问题setkeyv(data, paste0("C", 1:10))
,但这根本不是一个优雅/实用的解决方案.
我有一个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"控制台中粘贴相同的代码,则不会发生这种情况.
在这两种情况下,我都在控制台中获得以下输出
我在这里发现了一个可能相关的帖子,但坦率地说,我无法判断这两个问题是否会减少到同一个问题.
我想选择一个字符向量的所有元素,除了匹配特定字符的元素.
我可以轻松地完成它%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) 我有一个很大的(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) 我想比较两个向量元素,以检查第一个向量中某个位置的元素是否与第二个向量中相同位置的元素不同.
关键是我NA
在向量中有值,当对这些值进行比较时,我得到的NA
不是TRUE
或FALSE
.
可重复的例子:
这是我得到的:
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)
在这个链接上有一个可能的解决方案,但是这个人正在创建一个执行任务的功能.我想知道是否有更优雅的方式来做到这一点.
r ×4
data.table ×2
arrays ×1
binary-data ×1
dplyr ×1
duplicates ×1
key ×1
na ×1
pycharm ×1
python ×1
vector ×1