如果我有一个带有因子列的空data.table,则无法使用:= NULL运算符删除因子列.整数和字符列没有问题.
library(data.table)
DT <- data.table(numbers = integer(0),
char.letters = character(0),
factor.letters = factor(character(0)))
DT[, factor.letters := NULL]
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
Error in `[.data.table`(DT, , `:=`(factor.letters, NULL)) :
Can't assign to column 'factor.letters' (type 'factor') a value of type 'NULL' (not character, factor, integer or numeric)
Run Code Online (Sandbox Code Playgroud)
请注意,DT[, char.letters := NULL]并DT[, numbers := NULL]不会产生错误.
因为因子列的行为与字符和整数列的行为不同,我怀疑这是data.table的问题,但我做错了吗?
编辑:上一个例子使用join来创建空的data.table(然后被调用join),但是通过直接创建它可以很容易地再现它.
如何在rmarkdown beamer演示文稿上显示页码(最好是4/10,5/10等)?提前致谢.
我知道这table是不是首选的方式 ,使频率表作为data.table.但是假设我有一个table,无论出于何种原因,我想要转换为data.table.该data.table转换不相同的方式工作的data.frame转换呢:
library(data.table)
tab <- table(1:101)
DF.tab <- data.frame(tab)
DT.tab <- data.table(tab)
Run Code Online (Sandbox Code Playgroud)
data.frame将table数据转换为a data.frame,同时data.table尝试将原始table对象存储为列.(我已经用其他例子中的tab <- table(1:n)多个值来测试它n.)
> str(DF.tab)
'data.frame': 101 obs. of 2 variables:
$ Var1: Factor w/ 101 levels "1","2","3","4",..: 1 2 3 4 5 6 7 8 9 10 ...
$ Freq: int 1 1 1 1 1 1 1 1 1 1 …Run Code Online (Sandbox Code Playgroud) 假设我有一些字符向量,我想将其子集化为与某些正则表达式不匹配的元素.我可能会使用-运算符删除grep匹配的子集:
> vec <- letters[1:5]
> vec
[1] "a" "b" "c" "d" "e"
> vec[-grep("d", vec)]
[1] "a" "b" "c" "e"
Run Code Online (Sandbox Code Playgroud)
除了匹配的条目之外,我还给了所有东西"d".但是如果我搜索一个未找到的正则表达式,而不是像我期望的那样得到所有东西,我什么也得不回来:
> vec[-grep("z", vec)]
character(0)
Run Code Online (Sandbox Code Playgroud)
为什么会这样?
我想这dplyr不仅仅是一个plyr问题.为了速度,我使用的data.table是一些我编写过的代码.在中间步骤中,我有一个表格,其中包含一些基因组数据,大约有32,000行:
> bedbin.dt
Source: local data table [32,138 x 4]
Groups: chr
bin start site chr
1 2 3500000 ssCTCF 1
2 3 4000000 ssCTCF+Cohesin 1
3 3 4000000 ssCTCF 1
4 4 4500000 ucCTCF 1
5 4 4500000 ssCTCF+Cohesin 1
6 4 4500000 ssCTCF+Cohesin 1
7 4 4500000 ssCTCF+Cohesin 1
8 4 4500000 ssCTCF 1
9 4 4500000 ssCTCF 1
10 5 5000000 ssCTCF 1
.. ... ... ... ...
Run Code Online (Sandbox Code Playgroud)
编辑
或者像这样的前100行数据(请向Ricardo Saporta索取说明) …