r - 将许多列除以另一列

标签 r

好的

A <- c(1:10)
B <- c(2:11)
C <- c(3:12)
df1 <- data.frame(A,B,C)

我不明白这个错误:

df2 <- df1 / df1[,"C"]
df2 <- df1[1:3,] / df1[1:3,"C"]

a <- subset (df1, select = c(A, B)) 
b <- subset (df1, select = c (C))
c <- a/b
## Error in Ops.data.frame(a, b) : 
##  ‘/’ only defined for equally-sized data frames

看到两者具有相同的行数:

dim(a)
dim(b)

最佳答案

当使用矩阵索引导致维度大小为 1(即一行或一列)但使用 drop=FALSE 时,R 会自动删除维度(除非您明确指定 subset() )在数据框上总是会产生一个数据框(即使它只有一列):

> str(b)
'data.frame':   10 obs. of  1 variable:
 $ C: int  3 4 5 6 7 8 9 10 11 12
> str(df1[,"C"])
 int [1:10] 3 4 5 6 7 8 9 10 11 12

所以除以df1[,"C"]除以数字(整数)向量而不是数据框。错误‘/’ only defined for equally-sized data frames意味着两个数据框的大小应该完全相同(行列的数量相同)。

sweep(df1,df1[,"C"],MARGIN=1,"/")可能更安全。

关于r - 将许多列除以另一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43456965/

相关文章:

r - 如何在R中找到相等的列?

r - 使用 tidyverse 从列表到数据框,选择特定的列表元素

r - 我正在尝试从 R 中的 github 读取一个 csv 文件。但是,当我尝试获取列的名称时,我只得到一个名称

r - 如何在 R Shiny 中调整 sidebarPanel 的宽度而不影响后续的 sidebarPanel 宽度

r - 为什么这给我一个 NaN

r - 多面ggplot条形图中您实验室的百分比?

r - 如何从 caret::predict() 获得类概率和预测?

r - 如何以独立于操作系统的方式从 R 打开本地 html 文件?

html - 在 WordPress 中嵌入 Shiny 的应用程序

r 中参数数量可变的回归函数