如何在R语言中对数据框指定列(除首列)乘以标量
解决方法
基础R实现
你第一个方法的问题是只提取了第2到200列运算,自然丢失了第一列。可以直接对数据框的指定列赋值,保留所有列:
# 先复制原数据避免修改原表,再对指定列做乘法 df2 <- df df2[, 2:200] <- df2[, 2:200] * a
也可以用cbind把第一列和运算后的列合并:
df2 <- cbind(df[, 1], df[, 2:200] * a) # 若需要保留原列名,可手动设置:colnames(df2) <- colnames(df)
tidyverse实现
你之前的代码错误在于混用了mutate_at和across——mutate_at是旧版语法,新版直接用mutate配合across即可:
library(tidyverse) # 方法1:直接在across中写运算逻辑 df2 <- df %>% mutate(across(2:200, ~ .x * a)) # 方法2:用你定义的scalar函数 scalar <- function(x) x * 0.75 df2 <- df %>% mutate(across(2:200, scalar))
如果列数不固定,还可以通过排除第一列的方式简化代码:
df2 <- df %>% mutate(across(-1, ~ .x * a))
内容的提问来源于stack exchange,提问作者gradstudent4life
相关产品推荐
相关产品推荐

