R语言 用矢量分割每条数据框行
在这篇文章中,我们将讨论如何在R编程语言中用向量来划分每个数据框的行。
方法1:使用mapply()方法
mapply()方法可以用来将一个FUN应用到数据框或矩阵中,以修改数据。作为第一个参数指定的函数可以是任何布尔运算,算术或逻辑运算。然后运算符被应用,以数据框的行作为一个操作数,以向量作为另一个操作数。结果必须存储在另一个变量中。这个操作所花费的时间相当于数据框架中的行数。
语法: mapply(FUN, df , vec)
例子
# declaring dataframe
data_frame <- data.frame(col1 = c(2,4,6), col2 = c(4,6,8),
col3 = c(8,10,12), col4 = c(20,16,14))
print ("Original Dataframe")
print (data_frame)
# declaring vector
vec <- c(1:4)
# dividing each row by vector
div <- mapply('/', data_frame, vec)
print ("Result of division")
print (div)
输出
[1] "Original Dataframe"
col1 col2 col3 col4
1 2 4 8 20
2 4 6 10 16
3 6 8 12 14
[1] "Result of division"
col1 col2 col3 col4
[1,] 2 2 2.666667 5.0
[2,] 4 3 3.333333 4.0
[3,] 6 4 4.000000 3.5
方法2:使用sweep()方法
R编程语言中的这个方法通过扫出一个摘要统计,返回一个从输入数组获得的数组。该方法用于计算所选轴上的数据帧的算术运算。对于逐行运算,选择的轴是2,操作数是数据框架的行。结果必须存储在另一个变量中。这个操作产生的时间相当于数据框架中的行数。结果列的数据类型是最大的兼容数据类型。
语法: sweep (df, axis, vec, op)
参数:
- df – 数据框架
- axis – 要按行计算,使用 axis = 1,要按列计算,使用 axis = 2
- vec – 在数据帧上应用的向量
- op – 要应用的运算符
例子
# declaring dataframe
data_frame <- data.frame(col1 = c(2,4,6), col2 = c(4,6,8),
col3 = c(8,10,12), col4 = c(20,16,14))
print ("Original Dataframe")
print (data_frame)
# declaring vector
vec <- c(1:4)
# dividing each row by vector
div <- sweep(data_frame,2,vec,'/')
print ("Result of division")
print (div)
输出
[1] "Original Dataframe"
col1 col2 col3 col4
1 2 4 8 20
2 4 6 10 16
3 6 8 12 14
[1] "Result of division"
col1 col2 col3 col4
1 2 2 2.666667 5.0
2 4 3 3.333333 4.0
3 6 4 4.000000 3.5