将两列替换为只有一列表示其他两列的函数

replace two columns with only one column representing a function of the other two

我想知道在 R base 中是否有一个单行命令来替换一个矩阵的两列或一个数据框只有一列代表应用在两列上的数学函数的结果更换。例如,假设我有这个数据框:

> vehicle = c("bike", "car", "train", "pork")
> time = c(25,35,20,5)
> distance = c(3.2,5.4,4,8.9)
> df = data.frame(vehicle,time,distance)
> df
  vehicle time distance
1    bike   25      3.2
2     car   35      5.4
3   train   20      4.0
4    pork    5      8.9

我想用根据时间和距离列 (df$distance/df$time) 计算的每辆车的速度替换最后两列,这样最终结果将是:

> df
  vehicle     speed
1    bike 0.1280000
2     car 0.1542857
3   train 0.2000000
4    pork 1.7800000

以你想要的任何单位。我不会为转换或其他任何事情而烦恼。我能够获得结果,但我很好奇是否有一个衬垫可以做到这一点。有什么建议么?谢谢。

你可以试试

data.frame(vehicle=df$vehicle, speed=df$distance/df$time)

或使用 transform/within 等并删除 "time"、"distance" 列

transform(df, speed=distance/time)[-c(2:3)]

另一种选择是使用 dplyr

中的 transmute
library(dplyr)
transmute(df,vehicle=vehicle, speed=distance/time)