我一直在挠挠我的头。我有两个数据帧:df
乘以数据帧的列
df <- data.frame(group = 1:3,
age = seq(30, 50, length.out = 3),
income = seq(100, 500, length.out = 3),
assets = seq(500, 800, length.out = 3))
和weights
weights <- data.frame(age = 5, income = 10)
我想乘这两个数据帧只对相同的列名。我想是这样的:
colwise(function(x) {x * weights[names(x)]})(df)
但显然没有为colwise
工作不留列名在函数内部。我看了各种mapply
解决方案(example),但我无法想出一个答案。
产生的data.frame
应该是这样的:
structure(list(group = 1:3, age = c(150, 200, 250), income = c(1000,
3000, 5000), assets = c(500, 650, 800)), .Names = c("group",
"age", "income", "assets"), row.names = c(NA, -3L), class = "data.frame")
group age income assets
1 1 150 1000 500
2 2 200 3000 650
3 3 250 5000 800
谢谢@Gavin。 (我在发布之前看过扫描,但根本不了解这个功能)。请您详细说明如何不依赖名称的顺序?原始DF可能有100列,但重量可能只有几个,并且可以以任何顺序。 – karlos
查看我的更新。关键是要确保在代码行中每个对象的顺序都是正确的。所以在'nams'中设置你想要的顺序,然后用'nams'命令所有的对象。 –
谢谢!我认为这是一个很好的解决方案,可以用于很多情况。 – karlos