r - 如何在R中将两个不同尺寸的小标题相乘?
问题描述
当我将向量乘以矩阵时,我会:
mat <- matrix(c(c(2,3),c(4,5)),2)
vec <- c(1,-1)
vec * mat
我明白了
[,1] [,2]
[1,] 2 4
[2,] -3 -5
但是当我尝试用 tibbles 做类似的事情时,比如
library(dplyr)
a <- tibble(x = c(1,-1))
b <- tibble(y = c(2,3), z = c(4,5))
c <- a*b
我得到错误,
Error in Ops.data.frame(a, b) :
‘*’ only defined for equally-sized data frames
在同一思路下,我如何使用d中的transmute
变量乘以x
和y
乘以x
?z
tibble
d <- tibble(x = c(1,-1), y=c(2,3), z= c(4,5))
解决方案
您可以使用
d %>% mutate_at(vars(c(y, z)), ~.x*x)
或者如果您有两个以上的列
d %>% mutate_at(vars(-x), ~.x*x)
请注意,如果您使用的是旧版本的dplyr
软件包,则必须使用稍微不同的语法,如下所示:
d %>% mutate_at(vars(-x), funs(. * x))
d %>% mutate_at(vars(c(y, z)), funs(. * x))
推荐阅读
- ruby - 编写 Metasploit 脚本以利用一组主机
- python - IndentationError: unindent 不匹配任何外部缩进级别(我使用 sublime)
- linux - 如何在 yocto 中为 makefile 编写配方
- javascript - Leaflet.js:仅显示特定国家,暗淡或隐藏其余国家
- java - 在美丽的汤中将检索到的数据保存到 CSV
- javascript - 将属性从父组件传递给子组件
- git-rewrite-history - BFG-repo-cleaner 并推回 GitHub
- javascript - React.js如何重定向输入表单中的提交
- c# - asp.net 身份控制器及其视图位于何处?
- python - 将个人资料图片添加到 Django 中的 UserPostListView