R语言 对data.table的每一指定列应用函数
在这篇文章中,我们将看到如何在R编程语言中对data.table的每个指定列应用一个函数。
R语言中的data.table库被用来创建数据集,并以一种有组织的方式表示它。该库可以通过以下命令下载并安装到工作空间。
install.packages("data.table")
然后可以使用基本的R data.table方法来创建数据表。行和列的名称可以在 data.table 中指定。每一列可以属于不同的数据类型。
一个函数可以被应用到data.table的特定列中。该函数,可以是聚合的,也可以是逻辑的,都可以应用到data.table中。这可以用lapply方法来完成,该方法用于对给定的输入列表对象的所有元素应用一个操作。
该方法将数据框架对象作为输入,并将列表对象作为输出返回。lapply方法在R语言中具有如下语法。
语法: lapply(obj, fun)
参数
Obj:一个向量或一个对象
Fun。应用于输入R对象的每个元素的函数
该方法可以应用于指定数据框对象的特定列。下面的代码片断说明了这个过程,其中一个算术运算符被应用到指定的数据框架列中的数据值。常量值1被添加到数据框的col1和col3中。结果被保留在原始数据框中。
# installing the required library
library(data.table)
# creating the data table
dt <- data.table (
col1 = 1:5,
col2 = c(TRUE,FALSE,FALSE,TRUE,TRUE),
col3 = c(7,5,2,4,8)
)
# print data table
print("Data Table")
print(dt)
# specifying the columns to modify
col_vals <- c("col1","col3")
# adding 1 to the col1 and col3 value
dt[ , (col_vals) := lapply(.SD, "+", 1),
.SDcols = col_vals]
# modified data table
print("Modified Data Table")
print(dt)
输出
[1] "Data Table"
col1 col2 col3
1: 1 TRUE 7
2: 2 FALSE 5
3: 3 FALSE 2
4: 4 TRUE 4
5: 5 TRUE 8
[1] "Modified Data Table"
col1 col2 col3
1: 2 TRUE 8
2: 3 FALSE 6
3: 4 FALSE 3
4: 5 TRUE 5
5: 6 TRUE 9
下面的代码片断说明了在所使用的数据框架的数据元素之间应用大于的关系操作。在大于运算中,数据框的col1值与常数3进行比较。所有满足该值的列返回一个真布尔值,否则返回假值。
# installing the required library
library(data.table)
# creating the data table
dt <- data.table (
col1 = 1:5,
col2 = c(TRUE,FALSE,FALSE,TRUE,TRUE),
col3 = c(7,5,2,4,8),
col4 = c("Geeks","for","Geeks","is","fun")
)
# print data table
print("Data Table")
print(dt)
# specifying the columns to modify
col_vals <- c("col1")
# checking if col1 value is
# greater than the constant 3
dt[ , (col_vals) := lapply(.SD, ">", 3),
.SDcols = col_vals]
# modified data table
print("Modified Data Table")
print(dt)
输出
[1] "Data Table"
col1 col2 col3 col4
1: 1 TRUE 7 Geeks
2: 2 FALSE 5 for
3: 3 FALSE 2 Geeks
4: 4 TRUE 4 is
5: 5 TRUE 8 fun
[1] "Modified Data Table"
col1 col2 col3 col4
1: FALSE TRUE 7 Geeks
2: FALSE FALSE 5 for
3: FALSE FALSE 2 Geeks
4: TRUE TRUE 4 is
5: TRUE TRUE 8 fun