用apply()试试这个方法:
#Data
constant <- 100
df <- as.data.frame(cbind(c(1,2,3,4,5),
c(4,3,6,1,4),
c(2,5,6,6,2),
c(5,5,5,1,2),
c(3,6,4,3,1)))
colnames(df) <- c("aa", "bb", "cc", "dd", "ee")
#Apply
answers <- as.data.frame(t(apply(df,1, function(x) constant * (1 + x))))
输出:
answers
aa bb cc dd ee
1 200 500 300 600 400
2 300 400 600 600 700
3 400 700 700 600 500
4 500 200 700 200 400
5 600 500 300 300 200
或者使用dplyr 和across():
library(dplyr)
#Code
answer <- df %>% mutate(across(everything(),~constant * (1 + .)))
输出:
aa bb cc dd ee
1 200 500 300 600 400
2 300 400 600 600 700
3 400 700 700 600 500
4 500 200 700 200 400
5 600 500 300 300 200
或者同sapply():
#Code 3
answers <- sapply(df,function(x) constant * (1 + x))
answers <- as.data.frame(answers)
输出:
aa bb cc dd ee
1 200 500 300 600 400
2 300 400 600 600 700
3 400 700 700 600 500
4 500 200 700 200 400
5 600 500 300 300 200
或者这些选项中的任何一个都会产生相同的输出:
#Code 4
answers <- as.data.frame(do.call(cbind,lapply(df,function(x) constant * (1 + x))))
#Code 5
answers <- as.data.frame(mapply(function(x) constant * (1 + x),x=df))