我有以下矩阵,我们可以称之为MM,
我想将其放入数据表中,但我想将函数应用于第 3、4 和 5 列以及 Student_ID,这意味着
学生ID = 1
我想采用三个单独的向量:
MM[1:3,3] , MM[1:3,4], MM[1:3,4]
并应用一个函数,该函数将每个向量和两个向量作为输入
aa=c(10,20,30) 并且 bb=c(100,200,300)
例如,我们可以假设我的函数返回 aa[j]*x+bb[j] 并返回其总和。
你能帮我吗?
[Student_ID] [#_of_exams] [#_of_points_Lesson_1] [#_of_points_Lesson_2] [#_of_points_Lesson_3]
[1,] 1 1 1554932 5006119 2707671
[2,] 1 2 5477822 8958476 6593003
[3,] 1 3 7086366 644312 4005567
[4,] 2 1 9944580 806333 4501512
[5,] 2 2 4462829 177816 4127272
[6,] 2 3 211916 6066293 9329248
[7,] 2 4 3082177 6941193 4284849
[8,] 2 5 8411017 8687443 7621552
如果您可以使用数据框而不是数据表,则可以使用
summarize(across())
中的 dplyr
:
output <- as.data.frame(MM[1:3,]) %>%
summarise(across(
starts_with("#_of_points_Lesson_"),
~sum(aa*.x+bb) # your function
))
或者,如果您的函数需要多于一行:
# your function:
fn <- function(x) {
sum(aa*x+bb)
}
output <- as.data.frame(MM[1:3,]) %>%
summarise(across(starts_with("#_of_points_Lesson_"), fn))