将函数应用于具有可变参数的特定列

问题描述 投票:0回答:1

我有以下矩阵,我们可以称之为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
r apply
1个回答
0
投票

如果您可以使用数据框而不是数据表,则可以使用

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))
© www.soinside.com 2019 - 2024. All rights reserved.