R-在for循环中命名多个函数

R-在for循环中命名多个函数,r,function,for-loop,assign,R,Function,For Loop,Assign,我有以下数据框: > coc_comp_model[1:3,] Relationship Output Input |r-Value| Y-Intercept Gradient 1 DG-r ~ DG-cl DG-r DG-cl 0.8271167 0.0027217513 12.9901380 2 CA3-r ~ CA3-cl CA3-r CA3-cl 0.7461309 0.0350767684 27.6107963 3 CA2-r ~ CA2-cl

我有以下数据框:

> coc_comp_model[1:3,]
    Relationship Output  Input |r-Value|   Y-Intercept   Gradient
1   DG-r ~ DG-cl   DG-r  DG-cl 0.8271167  0.0027217513 12.9901380
2 CA3-r ~ CA3-cl  CA3-r CA3-cl 0.7461309  0.0350767684 27.6107963
3 CA2-r ~ CA2-cl  CA2-r CA2-cl 0.9732584 -0.0040992226 35.8299582
我想为数据帧的每一行创建简单的函数。以下是我尝试过的:

for(i in 1:nrow(coc_comp_model)) {
coc_glm_f[i] <- function(x)
x*coc_comp_model$Gradient[i] + coc_comp_model$Y-Intercept[i]
}
我也试着做一个函数向量,它也不起作用

感谢您阅读/帮助。

类似以下内容:

myfunc<-function(datrow, x){
  x*as.numeric(datrow[6]) + as.numeric(datrow[5] )
}
注意:使用dput共享数据比在子集中粘贴要容易得多。

类似于以下内容:

myfunc<-function(datrow, x){
  x*as.numeric(datrow[6]) + as.numeric(datrow[5] )
}

注意:使用dput共享数据比在子集中粘贴要容易得多。

没有函数向量这样的东西。R中有6种原子向量类型:raw、logical、integer、double、complex和character,另外还有异构列表类型,最后还有一种鲜为人知的表达式类型,它基本上是解析树的向量,比如调用函数时得到的。这些都是R中的向量类型

printAndType <- function(x) { print(x); typeof(x); };
printAndType(as.raw(1:3));
## [1] 01 02 03
## [1] "raw"
printAndType(c(T,F));
## [1]  TRUE FALSE
## [1] "logical"
printAndType(1:3);
## [1] 1 2 3
## [1] "integer"
printAndType(as.double(1:3));
## [1] 1 2 3
## [1] "double"
printAndType(c(1i,2i,3i));
## [1] 0+1i 0+2i 0+3i
## [1] "complex"
printAndType(letters[1:3]);
## [1] "a" "b" "c"
## [1] "character"
printAndType(list(c(T,F),1:3,letters[1:3]));
## [[1]]
## [1]  TRUE FALSE
##
## [[2]]
## [1] 1 2 3
##
## [[3]]
## [1] "a" "b" "c"
##
## [1] "list"
printAndType(expression(a+1,sum(1,2+3*4),if (T) 1 else 2));
## expression(a + 1, sum(1, 2 + 3 * 4), if (T) 1 else 2)
## [1] "expression"
然而,为data.frame的每一行创建单独的函数可能没有意义。如果您希望x参数采用标量值,我指的是一个单元素向量,那么您可以如下定义函数:

coc_glm_f <- function(x) x*coc_comp_model$Gradient + coc_comp_model$`Y-Intercept`;

没有函数向量这样的东西。R中有6种原子向量类型:raw、logical、integer、double、complex和character,另外还有异构列表类型,最后还有一种鲜为人知的表达式类型,它基本上是解析树的向量,比如调用函数时得到的。这些都是R中的向量类型

printAndType <- function(x) { print(x); typeof(x); };
printAndType(as.raw(1:3));
## [1] 01 02 03
## [1] "raw"
printAndType(c(T,F));
## [1]  TRUE FALSE
## [1] "logical"
printAndType(1:3);
## [1] 1 2 3
## [1] "integer"
printAndType(as.double(1:3));
## [1] 1 2 3
## [1] "double"
printAndType(c(1i,2i,3i));
## [1] 0+1i 0+2i 0+3i
## [1] "complex"
printAndType(letters[1:3]);
## [1] "a" "b" "c"
## [1] "character"
printAndType(list(c(T,F),1:3,letters[1:3]));
## [[1]]
## [1]  TRUE FALSE
##
## [[2]]
## [1] 1 2 3
##
## [[3]]
## [1] "a" "b" "c"
##
## [1] "list"
printAndType(expression(a+1,sum(1,2+3*4),if (T) 1 else 2));
## expression(a + 1, sum(1, 2 + 3 * 4), if (T) 1 else 2)
## [1] "expression"
然而,为data.frame的每一行创建单独的函数可能没有意义。如果您希望x参数采用标量值,我指的是一个单元素向量,那么您可以如下定义函数:

coc_glm_f <- function(x) x*coc_comp_model$Gradient + coc_comp_model$`Y-Intercept`;
coc_comp_model <- data.frame(Relationship=c('DG-r ~ DG-cl','CA3-r ~ CA3-cl','CA2-r ~ CA2-cl'),Output=c('DG-r','CA3-r','CA2-r'),Input=c('DG-cl','CA3-cl','CA2-cl'),`|r-Value|`=c(0.8271167,0.7461309,0.9732584),`Y-Intercept`=c(0.0027217513,0.0350767684,-0.0040992226),Gradient=c(12.9901380,27.6107963,35.8299582),check.names=F);
coc_glm_f(seq_len(nrow(coc_comp_model)));
## [1]  12.99286  55.25667 107.48578