我尝试了以下代码:
matrix1 = array(NA, c(3,4))
matrix2 = array(NA, c(3,4))
myfn = function(mat1, mat2){
for(x in 1:4) {
mat1[2,x] = 5
mat2[2,x] = 6
}
cat("MATRICES INSIDE FUNCTION: \n")
print(mat1)
print(mat2)
}
myfn(matrix1,matrix2)
matrix1
matrix2
矩阵的值在函数中发生变化,但原始矩阵没有变化。如何在函数内更改原始矩阵?
答案 0 :(得分:1)
我可以为一个矩阵回答这个问题。请尝试以下代码。
matrix1 = array(NA, c(3,4))
myfn = function(mat1){
for(x in 1:4) {
mat1[2,x] = 5
}
return(mat1)
}
然后调用函数
matrix1 <- myfn(matrix1)
如果要将相同的功能应用于不同的矩阵,请将它们保存在列表中并使用lappy。
List_of_matrices <- lappy(List_of_matrices,myfn)
答案 1 :(得分:0)
您可以尝试:
myfn <- function(mat1, mat2, Ncol, rowIndex) {
vars <- sapply(substitute(list(mat1, mat2)), deparse)[-1]
mat1[rowIndex, 1:Ncol] <- 5
mat2[rowIndex, 1:Ncol] <- 6
lst <- setNames(list(mat1, mat2), vars)
list2env(lst, envir = .GlobalEnv)
}
myfn(matrix1, matrix2, 4, 2)
#<environment: R_GlobalEnv>
matrix1
[,1] [,2] [,3] [,4]
[1,] NA NA NA NA
[2,] 5 5 5 5
[3,] NA NA NA NA
matrix2
[,1] [,2] [,3] [,4]
[1,] NA NA NA NA
[2,] 6 6 6 6
[3,] NA NA NA NA