首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

data.table使用setDT修改父环境/奇怪的行为

data.table是一个在R语言中用于数据处理和分析的强大包。它提供了高效的数据操作和计算功能,特别适用于大型数据集和高性能计算。

在data.table中,setDT函数用于将一个数据框转换为data.table对象,并将其修改为原地修改模式。这意味着setDT函数会修改原始数据对象,而不是创建一个新的对象。这种原地修改的方式可以提高数据处理的效率。

然而,使用setDT函数时需要注意一些奇怪的行为。当我们使用setDT函数将一个数据框转换为data.table对象时,它会修改数据框的父环境。这意味着数据框原本所在的环境会被替换为data.table对象所在的环境。

这种行为可能会导致一些意外的结果。例如,如果在转换为data.table对象之前,数据框所在的环境中存在其他变量或函数,那么这些变量或函数可能会被覆盖或修改。这可能会导致代码的意图被改变,产生错误的结果。

为了避免这种奇怪的行为,我们可以在使用setDT函数之前,先将数据框复制一份,然后再进行转换。这样可以保留原始数据框的父环境,并避免意外的修改。

总结起来,data.table的setDT函数可以将数据框转换为data.table对象,并进行原地修改。但在使用setDT函数时需要注意其可能导致的奇怪行为,特别是对父环境的修改。为了避免意外的结果,可以在使用setDT函数之前先复制数据框。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

「R」从gtf文件中抽取基因id和name

奇怪是GenomicFeatures既然把GTF文件读取进去了还抽取基因id了,但它就是不提供抽gene symbol功能。...尝试使用clusterProfiler包装转换器进行转换,发现基因丢了一半,这可不行。谷歌了一波没有发现满意答案,有个refGenome包好像可以做,但读取文件半天卡死了,特别奇怪。...最后还是自己动手,完成了6万个gene feature转换。 整个提取操作包装为函数了,输入可以是文件名或已经导入gtf文件数据框(最好还是文件吧)。由data.table包支持,速度杠杠!...message("Treat input as file") input = data.table::fread(input, header = FALSE) } else { data.table...::setDT(input) } input = input[input[[3]] == "gene", ] pattern_id = ".

4.7K50

「R」数据操作(三):高效data.table

接「R」数据操作(一)和「R」数据操作(二) 使用data.table包操作数据 data.table包提供了一个加强版data.frame,它运行效率极高,而且能够处理适合内存大数据集,它使用[]...data.table和data.frame,也就是说data.table继承了data.frame一些行为,但增强了其他部分。...#> 0.132 0.018 0.150 作为对比,我们使用data.table来完成这个任务,使用setDT()将数据框转换为data.table,该函数可以原地转换,不需要复制,并可以设定键。...我们知道R存在复制修改机制,这在进行大数据计算时开销很大,data.table提供了一系列支持语义set函数,它们可以原地修改data.table,因此避免不必要复制。...setDT(product_stats, key = "id") class(product_stats) #> [1] "data.table" "data.frame" 使用setnames()可以对列重命名

6K20

R 语言中汇总统计:如何批量计算不同因素不同水平平均值

有很多初学者遇到问题,写出来,更好自我总结,正所谓:“学然后知不足,教然后知困”。以输出(写博客)倒逼输入(学习),被动学习, kill time,是一个不错方法。...questions/12478943/how-to-group-data-table-by-multiple-columns 实际工作中,我们需要对数据进行平均值计算,这里我比较了aggregate和data.table...方法,测试主要包括: 1,对数据yield计算平均值 2,计算N不同水平平均值 3, 计算N和P不同水平平均值 1....使用data.table方法 代码: data(npk) head(npk) library(data.table) setDT(npk) # 单个变量 npk[,mean(yield),by=N]...(N,P)] N P V1 1: 0 1 52.41667 2: 1 1 56.15000 3: 0 0 51.71667 4: 1 0 59.21667 要点: data.table

3.1K20

如何获得FPKMRPKM计算需要基因长度(考虑exon之间overlap)

版权声明:本文为博主原创文章,转载请注明出处 这里我们跟Cufflinks原理一致,使用外显子长度,并且去除过多重叠外显子部分。...使用R语言,输入为基因GTF文件 包安装 依赖data.table, IRanges,rtracklayer install.packages("data.table") if (!...install.packages("BiocManager") BiocManager::install("rtracklayer") BiocManager::install("IRanges") 代码 library(data.table...) library("IRanges") require("rtracklayer") hg19 <- readGFF("hg19.gencodev27.gtf") anno <- setDT(hg19...结果文件 基因长度文件 链接:https://pan.baidu.com/s/1NtfM_ESyNyaT-kVaKu0MyQ 提取码:gy88 复制这段内容后打开百度网盘手机App,操作更方便哦 合并后外显子区域文件

3.2K20

R语言数据分析利器data.table包 —— 数据框结构处理精讲

因此,在对大数据处理上,使用data.table无疑具有极高效率。这里我们主要讲的是它对数据框结构快捷处理。...会将非数字转化为字符 data.table数据框也可使用dplyr包管道,这里不作阐述。...data.table为了加快速度,会直接在对象地址修改,因此如果需要就要在修改前copy,直接修改命令有:=添加一列,set系列命令比如下面提到setattr,setnames,setorder等;...当使用dt_names = names(DT)时候,修改dt_names会修改data.table列名,如果不想被修改,这个时候应copy原data.table,也可以使用dt_names <-...)直接修改某个位置值,rownum行号,colnum,列号,行号列号推荐使用整型,保证最快速度,方法是在数字后面加L,比如1L,value是需要赋予值。

5.7K20

通过修改环境变量修改当前进程使用系统 Temp 文件夹路径

本文介绍将自己当前进程 Temp 文件夹临时修改到应用程序自己一个临时目录下,避免与其他程序之间各种影响,同时也比较容易自行清理。...上面设置了两个环境变量,实际上 .NET Framework 中主要使用临时文件夹环境变量是 TMP 那个。...如果你使用了前面的方法修改了临时文件夹地址,请务必确保文件夹存在。...当然,如果你使用不是 .NET API,而是使用原生 Win32 API,那么你可以指定临时文件名前缀,相同临时文件名前缀程序会累计数量。...欢迎转载、使用、重新发布,但务必保留文章署名 吕毅 (包含链接: https://blog.walterlv.com ),不得用于商业目的,基于本文修改作品务必以相同许可发布。

33320

scRNA | 和顶刊学分析,OR值展示不同分组细胞类型差异

在对单细胞数据进行注释后,通常会使用柱形图比较 不同分组 之间cluster/celltype差异 scRNA分析|单细胞文献Fig1中分组umap图和细胞比例柱形图,本文介绍张老师2021年发表于...一 载入R包,数据 1 ,载入必要R包 #remotes::install_github("Japrin/sscVis") library("sscVis") library("data.table"...二 OR分析 1,载入单细胞数据 仍然使用之前sce2数据,为减少计算量提取Myeloid亚群做示例 ,注意该分析 需要不同分组 cluster/celltype细胞数均不为 0。...3,使用文献panT数据(图更好看) 文献中int.CD8.S35.meta.tb.rds就是meta.data矩阵文件,和上面的是一样,只是问了颜值高一点。...4,可视化 函数默认使用sscVis::plotMatrix.simple绘制,热图中没有P值结果。

31920

R+NLP︱text2vec包——BOW词袋模型做监督式情感标注案例(二,情感标注)

该模型忽略掉文本语法和语序等要素,将其仅仅看作是若干个词汇集合,文档中每个单词出现都是独立。BoW使用一组无序单词(words)来表达一段文字或一个文档.。...——data.table包(实战心得、dplyr对比、key灵活用法、数据合并)。...1、数据准备 library(text2vec) library(data.table) data("movie_review") setDT(movie_review) setkey(movie_review...sample函数设置,setDT与setkey是data.table主要内容,设置关键KEY,后续很多分析都即为有用。...R语言文本处理效率本身不高,而且大数据集下,任何处理软件处理都显得很无力,所以hash化是一个不可避免趋势。这一趋势,被雅虎广泛使用( Vowpal Wabbit)。

1.6K20

和CNS学画图:OR指数比较单细胞亚群组织偏好

Fig1F这幅图,利用OR比值比统计学方法,比较血液,正常组织和肿瘤组织,各单细胞亚群分布差异: 第四种策略也是张泽民团队经常使用一个统计方法,Ro/e,这个指标是观察到细胞数与期望细胞数比值...图表复现 下面利用作者给meta.data数据和代码计算OR值: 有一些R包需要提前安装一下: library("sscVis") library("data.table") library("grid.../data/metaInfo/panC.freq.all.meta.tb.rds") meta.tb文件实际上就是平时我们储存在Seurat单细胞对象里meta.data: 然后使用两个函数(改编自作者提供代码...=4,pdf.height=6,verbose=1) OR值储存在这个list里: OR.CD8.list$OR.dist.mtx 还有p值: OR.CD8.list$p.dist.tb 使用函数改编自作者提供代码...colSums(count.dist) sum.row <- rowSums(count.dist) count.dist.tb <- as.data.frame(count.dist) setDT

4.7K20

生信马拉松 Day5

今天内容主要是关于生信学习思路,另外学习了文件读取和输出1.解决问题正确姿势(1)检查代码和环境是代码错误?还是工作目录改变?...,没有前因后果3.不思考,不对比,不搜索就问4.只说“不懂”,不说具体不懂点2.csv文件打开方式(1)双击打开,默认使用excel(2)右键打开方式,可以选择记事本打开 注意:当数据量太大时可能导致记事本崩溃...txtread.delim() #读取txt一个替代函数失败有两种表现:1.报错 2.意外结果直接读取如果失败,就需要指定一些参数,常见参数有header=T(设置第一行为列名),check.names...Rdatasave()保存,注意file=不是固定第二个参数,所以不能省略load()加载,使Rdata变量出现在环境里,因此不能给数据命名7.三大基本函数dim() class()str()8.两个神奇读数据包..." "data.frame"#data.table是作者大神自创数据类型#一般用不到,所以就用data.table默认参数FALSE掉soft = data.table::fread("soft.txt

17400

gggibbous带你绘制月亮散点图

欢迎关注R语言数据分析指南 ❝本节来介绍一个案例使用「gggibbous」包绘制月亮散点图,下面小编就通过一个案例来进行展示数据为随意构建无实际意义仅作图形展示用,添加了详细注释希望各位观众老爷能够喜...❞ 关注下方公众号下回更新不迷路 加载R包 library(data.table) library(tidyverse) library(ggforce) library(ggtext) library...= circleProgressiveLayout( (radius$N2 / max_value) / 20 ) out = setDT(out) # 将'out'数据框转换为数据表格式...() # 计算x数据框中每个元素纵坐标,并存储在'y0'列中 x$r = out[index]$radius # 将x数据框中每个元素半径信息存储在'r'列中 return(x) })...、标签和文本样式 scale_y_continuous(breaks = c(1, 2), labels = c("AI", "Human")) + # 设置填充颜色手动映射,并使用特定调色板

16920

R Tricks: 如何处理Gaps & Islands问题?

提 出问题 话说有个擅长使用SQL小伙伴在StackOverflow上提出了这样一个问题,他说,Gaps & Islands问题在SQL中能很容易解决,那么在R中也能高效解决吗?...) 解 题思路 在解决本问题过程中我们需要用到data.table包!...上一行代码中,使用关键函数是累计最大值函数cummax。此外,由于cummax不能直接处理日期格式,所以需要先将日期转化为数字进行比较,完了再转换回日期。...本 期总结 本期大猫带领大家学习了如何处理Gaps & Islands问题——也即如何合并时间上有重叠观测。我们灵活使用了cummax与cumsum函数,他们在处理分组数据时候尤其有用。...", "data.frame"), row.names = c(NA, -13L) ) setDT(dat)

1.1K20

懒癌必备-dplyr和data.table让你数据分析事半功倍

找到合适packages并学习使用它,绝对会让我们数据分析工作事半功倍! 我们有没有发现dylyr包中函数使用一些规律? 有的!...如果你日常处理数据量非常大,有上亿行数据处理需求,这个时候你完全可以放心大胆使用data.table 这个包异常高效,速度非常快!!...data.table这个包语法用起来稍微有点奇怪(哈哈~), 但是速度亲妈快啊!!小伙伴们一定不能错过绝世好包! 铺垫了这么多,来来来,数据分析神器data.table走起来!!...使用i DT[3:5] #选取3到5行数据 class(DT) [1] "data.table" "data.frame" DT[v1=="A"] #基于条件选择 DT[v1 %in% c("A",..."B")] 使用j DT[,v1] #选择v1列 那如果我要选择多列呢,大家注意一下这里不是用c()来选取了, 而是通过.()来选取,注意前面有一个”.”号,所以我说data.table语法有点奇怪

2.4K70

R︱高效数据操作——data.table包(实战心得、dplyr对比、key灵活用法、数据合并)

网络上充斥data.table很好,很棒,性能棒之类,但是从我实际使用来看,就得泼个水,网上博客都是拿一些简单案例数据,但是实际数据结构很复杂情况下,批量操作对于data.table编码来说,...data.table中,还有一个比较特立独行函数: 使用:=引用来添加或更新一列(参考:R语言data.table速查手册) DT[, c("V1","V2") := list(round(exp(V1...(data_one数据必须设置key,data_two默认第一行为Key)。...2、on=""方式 DT[X, on="x"] 这里on指的是DT变量中变量名称,X还是按照key,如果没设置就会默认第一行为key。...2016-11-28补充: 留言区大神给了一个比较好选中列方式,其中主要就是对with使用data.table取列时,可以用data[,1,with=FALSE]取data第一列

7.9K43

128-R茶话会21-R读取及处理大数据

前言 最近要处理一个100K*1M 左右大小矩阵,这个矩阵行为病人记录,列则是每个突变位点突变信息,记录为0,1,2。 这个矩阵单纯大小就有300多G,我该如何去读取它、处理它呢?...毫无疑问指向data.table 包中fread。 它有两个优点: 效率飞速,自带多线程操作; data.table 格式很好地节约内存。 可是,300多G 对我来说还是有些大了。...1.1-逐行读取数据 使用命令readLines,该函数通过与文件建立某种连接,并设置参数n控制每次读取行数。...2-优化处理过程 首先,我矩阵是从数据框得到,而它们读入时被定义为了字符串型,我需要对他们使用转型。 使用apply?来点多线程,mapply? no,no,no。...如果更大规模数据量呢?至少我暂时还没有遇到。而且简单数据处理,linux 中sed 或awk 也是不错选择,csvtk 也是一个很好用软件。 ps:感觉我这期翻译味好重,奇怪了。

41020

R语言︱数据集分组、筛选(plit – apply – combine模式、dplyr、data.table)

3.aggregate函数对分组字段顺序有一个奇怪要求:必须反向排列。...(iris$setosa)] #按照照setosa大小,重排Sepal.Length数据列 四、dplyr与data.table data.table可是比dplyr以及python中...data.table语法简洁,并且只需一行代码就可以完成很多事情。进一步地,data.table在某些情况下执行效率更高。...在使用data.table时候,需要预先布置一下环境: data<-data.table(data) 如果不布置环境,很多内容用不了。...data.table比较简洁一步搞定,dplyr花了两步,不过也dplyr也可以通过%>%来实现一步搞定。%>%功能是用于实现将一个函数输出传递给下一个函数第一个参数。

20.6K32

【期末大作业】基于HTML+CSS+JavaScript南京大学网页校园教育网站html模板(3页)

二、✍️网站描述 ️HTML静态网页设计作业使用dreamweaver制作,采用DIV+CSS布局,共有多个页面,首页使用CSS排版比较丰富,色彩鲜明有活力。...页面中有多媒体元素,如gif、视频、音乐,表单技术使用。 页面清爽、美观、大方,不雷同。 。 不仅要能够把用户要求内容呈现出来,还要满足布局良好、界面美观、配色优雅、表现形式多样等要求。...网站素材方面:计划收集各大平台好看图片素材,并精挑细选适合网页风格图片,然后使用PS做出适合网页尺寸图片。...、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad++ 等任意html编辑软件进行运行及修改编辑等操作)。...首先要明确自己学习目标是什么,是想解决什么问题,实现怎样目标。 第二、学习要建立个人知识体系 知识是学不完,书籍是浩如烟海。我们尽情徜徉其中时候,千万不要被海水淹死,没有自我了。

84920
领券