📜  仅对 R 中的特定数据帧列使用应用函数

📅  最后修改于: 2022-05-13 01:54:18.432000             🧑  作者: Mango

仅对 R 中的特定数据帧列使用应用函数

在本文中,我们将仅对 R 语言中的特定数据框列应用函数。

R 中的函数可以使用函数关键字指定,例如,它将元素 x 作为输入并根据用户定义的函数修改 x 中的每个元素。

fun <- function(x){
}

然后可以使用 R 中内置的 apply 方法将预定义或用户定义的函数应用于数据框的特定列。 R 中的 apply 方法用于将给定的函数应用于数据框的元素指定的轴。然后修改元素。但是,必须小心处理因子列,因为它可能导致数据丢失或歧义。返回的输出采用数据帧的形式。

示例 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。相应地返回结果。