仅对 R 中的特定数据帧列使用应用函数
在本文中,我们将仅对 R 语言中的特定数据框列应用函数。
R 中的函数可以使用函数关键字指定,例如,它将元素 x 作为输入并根据用户定义的函数修改 x 中的每个元素。
fun <- function(x){
}
然后可以使用 R 中内置的 apply 方法将预定义或用户定义的函数应用于数据框的特定列。 R 中的 apply 方法用于将给定的函数应用于数据框的元素指定的轴。然后修改元素。但是,必须小心处理因子列,因为它可能导致数据丢失或歧义。返回的输出采用数据帧的形式。
Syntax: apply(data_frame[:col_indx],axes , FUN)
Arguments :
- data_frame – The data frame to apply function 2
- axes – The axes over which to apply function, 1 specifies rows and 2 columns
- FUN – The function to be applied
示例 1:仅对 R 中的特定数据框列应用函数
R
# creating a data frame
data_frame <- data.frame(col1 = c(1:10),
col2 = 11:20,
col3 = c(rep(TRUE,4),rep(FALSE,6)))
print("Original DataFrame")
print(data_frame)
# defining the function
user_defined_func <- function(x) {
# subtracting the value of 1 from each
x-1
}
data_frame_temp <- apply(data_frame[ ,c(1,2)], 2, user_defined_func)
print("Modified col2")
print (data_frame_temp)
# retrieving the entire data frme
data_frame_mod <- data_frame
# getting column names
colnames <- colnames(data_frame_mod)
data_frame_mod[ , colnames %in% colnames(data_frame_temp)] <- data_frame_temp
print("Modified DataFrame")
print(data_frame_mod)
R
# creating a data frame
data_frame <- data.frame(col1 = c(1:10),
col2 = 11:20,
col3 = c(rep(TRUE,4),rep(FALSE,6)),
col4 = 0:9)
print("Original DataFrame")
print(data_frame)
# defining the function
user_defined_func <- function(x) {
x+1
}
data_frame_temp <- apply(data_frame[ ,2:4],2, user_defined_func)
print("Modified col2")
print (data_frame_temp)
# retrieving the entire data frme
data_frame_mod <- data_frame
# getting column names
colnames <- colnames(data_frame_mod)
data_frame_mod[ , colnames %in% colnames(data_frame_temp)] <- data_frame_temp
print("Modified DataFrame")
print(data_frame_mod)
输出:
示例 2:仅针对 R 中多个数据帧列的特定应用函数
该函数可以以这样一种方式应用于多个列,即考虑形成数据帧的整个列集的子集的列范围。以下代码片段说明了将整数值 1 添加到最后三个数据框列的过程:
电阻
# creating a data frame
data_frame <- data.frame(col1 = c(1:10),
col2 = 11:20,
col3 = c(rep(TRUE,4),rep(FALSE,6)),
col4 = 0:9)
print("Original DataFrame")
print(data_frame)
# defining the function
user_defined_func <- function(x) {
x+1
}
data_frame_temp <- apply(data_frame[ ,2:4],2, user_defined_func)
print("Modified col2")
print (data_frame_temp)
# retrieving the entire data frme
data_frame_mod <- data_frame
# getting column names
colnames <- colnames(data_frame_mod)
data_frame_mod[ , colnames %in% colnames(data_frame_temp)] <- data_frame_temp
print("Modified DataFrame")
print(data_frame_mod)
输出:
解释:但是,我们注意到,由于 1 是一个整数值,当我们将其值添加到第 2 列值的逻辑值 TRUE 和 FALSE 时,会导致值转换为整数的歧义,其中 TRUE 被视为 1 和 FALSE映射到整数值 0。相应地返回结果。