R语言 将函数应用于R数据框中的每一行

R语言 将函数应用于R数据框中的每一行

在这篇文章中,我们将讨论如何在R编程语言中对数据框架的每一行应用一个函数。让我们举个例子,以便更好地理解。

例子

假设我们有一个假数据集,A、B、C为列名,一些数值为行。

编号 A B C
1. 5 6 1
2. 6 4 2
3. 7 3 3
4. 5 4 7
5. 6 2 8
6. 9 6 9

而我们想应用一个函数来返回每行数值的乘积,那么结果的数据框应该是这样的。

编号 A B C 产品
1. 5 6 1 60
2. 6 4 2 48
3. 7 3 3 63
4. 5 4 7 140
5. 6 2 8 96
6. 9 6 9 486

对R数据框中的每一行应用函数

方法: 使用apply函数

apply() 用于在数据框或矩阵上计算一个函数。使用apply()函数的目的是为了避免使用循环。apply()函数将输出作为一个向量返回。

语法: apply(x, margin, func)

参数:

x: 数组或矩阵

margin: 要应用操作的维度

func: 要应用的操作

分步实现

步骤1: 创建一个假数据集。

# Apply function to each row in r Dataframe
 
# Creating dataset
# creating firs column
x <- c(5, 6, 7, 5, 6, 9)
 
# creating second column
y <- c(6, 4, 3, 4, 2, 6)
 
# creating third column
z <- c(1, 2, 3, 7, 8, 9)
 
# creating dataframe
df <- data.frame(A = x, B = y, C = z)
 
display(df)

输出

  A B C
1 5 6 1
2 6 4 2
3 7 3 3
4 5 4 7
5 6 2 8
6 9 6 9

第2步: 创建一个用于计算产品的自定义函数。

# creating function to computer product
product = function(x, output){
   
  # accessing elements from first column
  A = x[1]
   
  # accessing elements from second column
  B=x[2]
   
  # accessing elements from third column
  C= x[3]
   
  # return product
  return(A*B*C)
}

注意:这里我们只是定义了计算乘积的函数,并没有调用,所以在调用这个函数之前不会有输出。

第3步: 使用应用函数来计算每一行的乘积。

语法: (data_frame,1,function,…)。

现在我们正在调用新创建的product函数,并使用apply函数返回乘积。

# apply(X,MARGIN,FUN,...)
apply(df,1,product  )

输出

[1]  30  48  63 140  96 486

注意:apply()返回的产品是一个矢量列表。所以我们必须使用cbind(列绑定)将其添加到数据框中。

第4步: 将产品列表添加到数据框中。

# apply(X,MARGIN,FUN,...)
single <- apply(df,1,product  )
 
# adding product vector to dataframe
cbind(df,product = single)

输出

将函数应用于R数据框中的每一行

使用apply()。

下面是完整的实现

# Apply function to each row in r Dataframe
 
# Creating dataset
# creating firs column
x <- c(5,6,7,5,6,9)
 
# creating second column
y <- c(6,4,3,4,2,6)
 
# creating third column
z <- c(1,2,3,7,8,9)
 
# creating dataframe
df <- data.frame(A=x,B=y,C=z)
 
# creating function to computer product
product = function(x,output){
   
  # accessing elements from first column
  A = x[1]
   
  # accessing elements from second column
  B=x[2]
   
  # accessing elements from third column
  C= x[3]
   
  # return product
  return(A*B*C)
}
 
# apply(X,MARGIN,FUN,...)
apply(df,1,product  )
 
# apply(X,MARGIN,FUN,...)
single <- apply(df,1,product  )
 
# adding product vector to dataframe
cbind(df,product = single)

输出

将函数应用于R数据框中的每一行

使用apply()。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程