小编Fra*_*ank的帖子

删除空data.table中的factor列时出错

如果我有一个带有因子列的空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),但是通过直接创建它可以很容易地再现它.

r data.table

13
推荐指数
1
解决办法
533
查看次数

如何将页码插入rmarkdown beamer幻灯片?

如何在rmarkdown beamer演示文稿上显示页码(最好是4/10,5/10等)?提前致谢.

beamer r-markdown

11
推荐指数
1
解决办法
5333
查看次数

表的data.table与表的data.frame非常不同

我知道这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.frametable数据转换为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)

r data.table

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

除了空grep之外的所有子集都返回空向量

假设我有一些字符向量,我想将其子集化为与某些正则表达式不匹配的元素.我可能会使用-运算符删除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)

为什么会这样?

grep r vector operators grepl

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

我可以更快地完成这个dplyr + data.table任务吗?

我想这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索取说明) …

r dplyr data.table

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

标签 统计

r ×4

data.table ×3

beamer ×1

dplyr ×1

grep ×1

grepl ×1

operators ×1

r-markdown ×1

vector ×1