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

将data.table列的子集传递给函数并在R中通过引用将结果添加回函数

在R语言中,可以使用data.table包来处理大型数据集。要将data.table列的子集传递给函数并通过引用将结果添加回函数,可以使用以下步骤:

  1. 首先,确保已安装并加载data.table包:install.packages("data.table")library(data.table)
  2. 创建一个data.table对象,假设为dt,包含多个列。
  3. 定义一个函数,接受data.table对象作为参数并修改其中的列。例如:
代码语言:txt
复制
myFunction <- function(data) {
  # 修改data.table的某个列
  data[, new_column := old_column * 2]
}

在这个例子中,myFunction函数接受一个data.table对象,并将old_column列的值乘以2,并将结果存储在new_column列中。

  1. 调用myFunction函数并传递data.table的子集作为参数。可以使用with = FALSE将data.table转换为普通的数据框,以便在函数内部使用列名。例如:
代码语言:txt
复制
subset <- dt[, .(old_column)][condition, with = FALSE]
myFunction(subset)

在这个例子中,condition表示用于选择data.table子集的条件,.()表示选择要传递给函数的列(仅选择old_column列)。

  1. 通过引用将结果添加回data.table。由于R的函数传递参数是按值传递的,为了在函数内部修改data.table并使其在函数外部可见,可以在函数定义时使用:=操作符。例如:
代码语言:txt
复制
myFunction <- function(data) {
  # 修改data.table的某个列
  data[, new_column := old_column * 2]
  # 返回修改后的data.table
  return(data)
}

这样,在调用myFunction函数后,可以将返回的data.table赋值给原始的data.table对象:

代码语言:txt
复制
dt <- myFunction(dt)

这样做将修改原始的data.table并将修改后的结果保存在其中。

总结起来,要将data.table列的子集传递给函数并在R中通过引用将结果添加回函数,需要创建一个函数来修改data.table的列,并使用with = FALSE选择要传递的子集列。然后,通过引用将结果添加回data.table。记得在函数定义时使用:=操作符来实现这一点。

关于data.table、R语言以及相关概念的更多信息,可以参考腾讯云的数据分析产品Data Lake Analytics(https://cloud.tencent.com/product/dla)和数据仓库产品数据仓库CDW(https://cloud.tencent.com/product/cdw)。

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

相关·内容

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

一个R对象转化为data.tableR可以时矢量,列表,data.frame等,keep.rownames决定是否保留行名或者列表名,默认FALSE,如果TRUE,行名存在"rn"行,keep.rownames...转化字符并通过R内部UTC转回本地时间。...n,.N(总数,直接在j输入.N取最后一),:=(直接在data.table添加,没有copy过程,所以快,有需要的话注意备份),.SD输出子集,.SD[n]输出子集第n,DT[,....(v), by=x] [] #加[]结果输出到屏幕上 DT[,c("m","n"):=list(mean(v),min(v)), by=x][] # 按x分组后同时添加m,n 两,内容是分别是mean...SD就包括了页写选定特定,可以对这些子集应用函数处理 allow.cartesian FALSE防止结果超出nrow(x)+nrow(i)行,常常因为i中有重复而超出。

5.8K20

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

data.table包提供了一个非常简洁通用格式:DT[i,j,by],可以理解为:对于数据集DT,选取子集行i,通过by分组计算j。...data.table,还有一个比较特立独行函数: 使用:=引用添加或更新一(参考:R语言data.table速查手册) DT[, c("V1","V2") := list(round(exp(V1...="Hospice"] (3)还有一些复杂结构: dt[a=='B' & c2>3, b:=100] #其他结构 在dt数据集中,筛选a变量等于"B",c2变量大于3,同时添加b变量,数值等于...%>%功能是用于实现将一个函数输出传递给下一个函数第一个参数。注意这里,传递给下一个函数第一个参数,然后就不用写第一个参数了。在dplyr分组求和过程,还是挺有用。...nomatch参数用于控制,当在i没有到匹配数据返回结果,默认为NA,也能设定为0。

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

    可以看到,计算结果第一实际上是“SELLERID.CLIENT”,我们需要把它拆分成两并调换顺序才行。...")],function(x) sum(x)) 4、subset()函数 利用subset()函数进行访问和选取数据框数据更为灵活,subset函数满足条件向量、矩阵和数据框按子集方式返回。...(iris$setosa)] #按照照setosa大小,重排Sepal.Length数据 四、dplyr与data.table data.table可是比dplyr以及python...data.table包提供了一个非常简洁通用格式:DT[i,j,by],可以理解为:对于数据集DT,选取子集行i,通过by分组计算j。...data.table比较简洁一步搞定,dplyr花了两步,不过也dplyr也可以通过%>%来实现一步搞定。%>%功能是用于实现将一个函数输出传递给下一个函数第一个参数。

    20.7K32

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

    例如,使用setkey()id设置为product_info一个键: setkey(product_info, id) 同样函数无任何返回,但我们已经为原始数据设置了键,而且原来数据看起来也没变化...,by所对应组合值是唯一,虽然实现了目标,但结果没有设置键: key(type_class_test0) #> NULL 这种情况下,我们可以使用keyby来确保结果data.table自动...我们知道R存在复制修改机制,这在进行大数据计算时开销很大,data.table提供了一系列支持语义set函数,它们可以原地修改data.table,因此避免不必要复制。...,分割后每个部分都是原始数据一个子集,并且原始数据和子集都是data.table。...举例,我们定义一个函数,计算market_data由用户定义年度均值: average = function(column){ market_data[, .

    6.1K20

    5个例子比较Python Pandas 和R data.table

    示例2 对于第二个示例,我们通过应用几个过滤器创建原始数据集子集。这个子集包括价值超过100万美元,类型为h房子。...另一方面,data.table仅使用列名就足够了。 示例3 在数据分析中使用一个非常常见函数是groupby函数。它允许基于一些数值度量比较分类变量不同值。...我们使用计数函数来获得每组房屋数量。”。N”可作为data.tablecount函数。 默认情况下,这两个库都按升序对结果排序。排序规则在pandasascending参数控制。...data.table中使用减号获得降序结果。 示例5 在最后一个示例,我们看到如何更改列名。例如,我们可以更改类型和距离名称。...inplace参数用于结果保存在原始数据帧。 对于data.table,我们使用setnames函数。它使用三个参数,分别是表名,要更改列名和新列名。

    3.1K30

    r」dplyr 里 join 与 base 里 merge 存在差异

    r4 r1 r3 r2 #> 1 S1 S2 S2 S1 S1 #> 2 S2 S1 S1 S2 S2 看起来似乎有点不可理喻,但实际上上面我构造数据集是有点特别的:前 2 个子集和第 3 个子集是没有可以连接...本质上是 data.table 体格泛型函数不支持类似基础包操作。 如何编写代码支持对上述数据集连接操作?...一般工作情况下,不同数据子集都存在可以连接,所以无论上述哪种方法都可以胜任工作。...如果 be_join 不为空,进行如下循环: 如果存在,则将这个子集和 to_join 按共同合并 如果不存在,使用循环位移一位,当前 be_join 第 2 个子集移动为 第 1 个。...检查 be_join 第一个子集与 to_join 存在共同 等待循环结束 我们可以查看结果: to_join[, c("r1", "r2", "r3", "r4", "r5")] #> r1

    1.6K30

    R语言 数据框、矩阵、列表创建、修改、导出

    数据框数据框创建数据框来源主要包括用代码新建(data.frame),由已有数据转换或处理得到(取子集、运算、合并等操作),读取表格文件(read.csv,read.table等)及R语言内置数据函数...R语言列名特殊字符-转化了,该编号可能与其他数据编号无法匹配,ex2 <- read.csv("ex2.csv“",row.names = 1,check.names = F) #row.names.../则为上一级)#文件是由生成它函数决定,不是由后缀决定,save为csv实际上还是一个Rdata#readr包可以实现base包类似功能library(data.table)#其中fread...2元素赋值修改数据框连接merge函数可连接两个数据框,通过指定公共使具有相同元素合并*merge函数可支持更复杂连接,但通过inner_join等更为简便,后述test1 <- data.frame...#取子集方法同数据框t(m) #转置行与,数据框转置后为矩阵as.data.frame(m) #矩阵转换为数据框列表列表内有多个数据框或矩阵,可通过list函数将其组成一个列表l <- list(m1

    7.7K00

    R语言基因组数据分析可能会用到data.table函数整理

    因此,在对大数据处理上,使用data.table无疑具有极高效率。这里主要介绍在基因组数据分析可能会用到函数。...转化字符并通过R内部UTC转回本地时间。...,默认_; subset 指定要铸造子集;利用; margins 函数尚不能应用(作者还没写好),预计设定编辑汇总方向; fill 填充缺失值; drop 设置成FALSE...(datatable.verbose=TRUE) 对于前面的DT,我现在f和d开头列名列作为测量变量,如下 pattern函数下面会讲,这里再讲一下是melt和dcast联合使用,先用melt...)结果 最后,写完这篇博客,timetaken断断续续大约一星期 参考文献 data.table manual: https://cran.r-project.org/web/packages

    3.3K10

    Day4-5 R语言代码

    (2)在数据框类型数据行取子集时、导入TXT文件时,注意一下数值型数据行/,有没有藏着字符型数据。马虎了就会影响后续数据处理。...可以让R不修改行列名字,PS:R语言中行列名字不能有特殊字符; 2)row.names = 1”这个参数意思时不能把第一作为行名;PS:R语言中行名不能重复,如果将有重复A设为行名,需要先不将...row.name参数添加进来,处理A重复值(去重复、两行取平均值合并为一行),再设置为行名。...,在读取过程不需要添加过多参数,而且读取大文件速度快,不过读取数据会被默认为"data.table"格式,需要添加参数"data.table=F"来避免 #data.table ex1 = data.table...4、本地安装,R包zip文件下载下来,然后放在工作路径 devtools::install_local(“xxxx.zip”) 5、window电脑可能会存在权限问题 6、R包不会用,有作者第一手教程

    23720

    《高效R语言编程》6--高效数据木匠

    tidyr方便了收集与分割两个常见操作 gather()收集是列名换成新变量,宽表变成长表,spread()是实现相反过程函数。...与基本R类似函数不同,变量无需使用 $ 操作符就可直接使用,设计与magrittr包%>%管道操作符一起使用,以允许每个数据阶段写成新一行。其是一个大型包,本身可以看成一门语言。...改名 rename(),使用反引号‘`’包裹,允许R使用不规范列名。...RODBC是一个资深包,提供R与SQL server接口。DBI包提供了通用接口与驱动程序类集,如RSQLITE,是访问数据库统一框架,允许其他驱动程序以模块包添加。...这里建议不要把数据库密码和API密钥等放在命令,而要放大.Renviron文件。dbConnect()函数连接数据库,dbSendQuery()查询,dbFetch()加载到R

    1.9K20

    Day05 生信马拉松-文件读写

    文件读取1.1 R能读取文件格式图片1.2 .txt文件读取常见错误:read.table("ex1.txt"), read.table函数默认header = F,因此会自动加列名"V1","V2....csv"),直接使用read.csv()函数会出现以下错误①列名分隔符"-"被改为"."②第1默认被添加列名"x"图片正确使用:read.csv("ex2.csv",row.names = 1,check.names...= F) 表格文件读入到R中就得到一个data.frame,在R对data.frame修改不会同步到表格1.4 读取非工作目录下文件read.csv("import/gene.csv") import.../"为上一级文件,可叠加1.6 补充内容1.6.1 数据框不允许重复行名图片解决方案: ①先不加row.names参数读取 ②处理第1重复值(去重、均值、合并为一行等) ③第1设为行名1.6.2...数据框数据缺失图片错误解决方式soft <- read.table("soft.txt",header = T,fill = T),会出现原有确实数据位置错列图片正确使用:soft2 <- read.table

    19720

    Fama French (FF) 三因子模型和CAPM模型分析股票市场投资组合风险收益可视化

    数据被打包为 zip 文件,所以需要做不仅仅是调用 read_csv()。使用tempfile() 基础 R 函数来创建一个名为 temp. 这是我们放置压缩文件地方。...temp <- tempfile() R 创建了一个名为临时文件 temp 。下载 3-factor zip。 我们想将它传递给 download.file() 并将结果存储在 temp....如果我们导入不同 FF 因子集,我们需要指定不同列名。 作为一种替代方法,下面的代码块在导入后转换为数字,但更通用。它可以应用于其他 FF 因子集合。...vars()函数操作与select()函数类似,我们可以通过在date前面加一个负号来告诉它对所有进行操作,除了date。...我们可以这些结果通过管道传输到 ggplot() 并创建具有置信区间系数散点图。我不想绘制截距,因此会将其从代码流过滤掉。 我们用errorbar添加置信区间。

    3.8K30

    data.table语句批量处理变量

    问 题:批量处理表变量 正式开始说问题之前,我们先回顾一下data.table基本语句DT[i, j, by],简而言之,"i"是对行进行选择,"j"是对进行操作,"by"是分组。...批 量处理法:用lapply批量处理变量 在此时lapply妙用就显现出来了,在Rlapply用来对list每一个element进行相同处理,如何把它运用到data.table,话不多说先上代码:...而我们要处理变量是第3个到第34个,所以在.SD中选出3至34,运用lapply对选中.SD[, 3:34]里面每一个element使用as.Date函数。 再看,':='左边。...如何把处理好这些变量与变量名进行对应,这里就用到了colnames()这个函数,提取出我们这个data.table第3到第34个变量名字,这样就可以变量名和更改格式后变量按顺序进行一一匹配。...输出结果非常正常,那么只能证明一点:.SD不能用在 := 左边!!!大家在运用过程必须要注意。

    1.1K30

    R语言学习笔记之——数据处理神器data.table

    data.table 1、I/O性能: data.table被推崇重要原因就是他IO吞吐性能在R语言诸多包首屈一指,这里以一个1.6G多2015年纽约自行车出行数据集为例来检验其性能到底如何,...rm(list=ls()) gc() 2、索引切片聚合 data.table中提供了行索引、切片、分组功能于一体数据处理模型。...当整列和聚合单值同时输出时,可以支持自动补齐操作。 当聚合函数data.table分组参数一起使用时,data.table真正威力才逐渐显露。 mydata[,....左手用R右手Python系列——数据合并与追加 长宽转换: 长宽转换仍然支持plyrmelt/dcast函数以及tidyrgather/spread函数。...本篇仅对data.table基础常用函数做一个整理,如果想要学习期更为灵活高阶用法,还请异步官方文档。 左手用R右手Python系列——数据塑型与长宽转换

    3.6K80

    Python 弱引用 weakref

    使用方法 创建弱引用 weakref.ref(object[,callback]) # callback 可选函数,在引用对象被删除时调用 # 此只读属性返回当前关联到弱引用调。...如果提供了callback而不是None,并且返回weakref对象还活着,那么调将在对象即将完成时被调用;弱引用对象将作为唯一参数传递给调;所指对象将不再可用。...调引发异常将在标准错误输出中注明,但不能传播;它们处理方式与对象 __del__() 方法引发异常完全相同。 如果对象是可散,则弱引用是可散。...当不再有对键引用时,字典条目将被丢弃。这可用于附加数据与应用程序其他部分所拥有的对象相关联,而无需向这些对象添加属性。这对于覆盖属性访问对象特别有用。...None ,调用者便知道对象已经被销毁了; 执行函数 wr_callback (如有); 由此可见,弱引用工作原理其实就是设计模式 观察者模式( Observer )。

    1.1K10

    Learn R 函数R

    ,参数是一个数值型向量,输出结果是该向量平均值加2倍标准差,并写出用户使用该函数代码 。...") #ls是展示出该包函数 R语言中函数 ()前函数 [] 是取子集,一定是个数据 【】里有“,”->向量或矩阵 [[]] 前通常是个列表 列表取子集 $ 数据框取子集 <-...分隔符 常见分隔符:逗号、空格、制表符(\t) 表格文件读取到R语言中 read.table() #读取txt格式 read.csv()#读取csv格式 文件导出 不要覆盖原文件 代码可重复 数据可重现...>save(soft,file = "soft.Rdata") >rm(list = ls()) #环境所有数据清空 为了看保存文件 >load(file = "soft.Rdata") 练习...read.table()智能版 >a=data.table::fread("soft.txt",data.table = F)#读取很智能,不会导致窜 #### 4.rio包 可以读取任何形式,但有问题文件仍有问题

    1.4K00
    领券