Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用用户定义的;for loop";函数来构造数据帧_R_Function_Dataframe - Fatal编程技术网

使用用户定义的;for loop";函数来构造数据帧

使用用户定义的;for loop";函数来构造数据帧,r,function,dataframe,R,Function,Dataframe,我试图根据用户定义的函数生成一个数据帧。我的问题是,在输出中只有第一行被填充。 下面是我正在使用的函数的一个示例: df <- data.frame(cs=rep(c("T1","T2","T3","T4"),each=16),yr=rep(c(1:4), times = 4, each = 4)) sp.df <- data.frame(matrix(sample.int(100, size = 20*64,replace=T), ncol = 20, nrow = 64)) m

我试图根据用户定义的函数生成一个数据帧。我的问题是,在输出中只有第一行被填充。 下面是我正在使用的函数的一个示例:

df <- data.frame(cs=rep(c("T1","T2","T3","T4"),each=16),yr=rep(c(1:4), times = 4, each = 4))
sp.df <- data.frame(matrix(sample.int(100, size = 20*64,replace=T), ncol = 20, nrow = 64))

myfunc<-function(X,  system, Title)
{
  for(i in 1:4){
    Col_T <- data.frame(matrix(NA, ncol = length(X), nrow = 4))
    Col_T[i,] <- colSums(X[which(df$yr==i & df$cs==system),])
    return (Col_T)}}

myfunc(X=sp.df, system="T1", Title="T1")

df该函数有两个问题:

  • 您正在使用all
    NA
    s作为for循环中的第一条语句覆盖
    Col\T
  • 您将从for循环中的函数返回
  • 改写如下:

    myfunc <- function(X, system, Title ) {
        Col_T <- data.frame(matrix(NA, ncol=length(X), nrow=4 ));
        for (i in 1:4)
            Col_T[i,] <- colSums(X[which(df$yr==i & df$cs==system),]);
        return(Col_T);
    };
    

    myfunc您在R中使用分号的情况非常少见,但并不错误。为什么要使用它?@MrGumble,在许多语言(R/JavaScript/SQL/bash)中,在不需要分号的上下文中,用分号显式终止每个语句一直是我的编程风格。也许这是我C/C++/Java经验的延续,但我觉得这有助于使代码更可读、更清晰,有点像程序员明确声明语句是完整的。此外,在同一行上对多个语句进行编码时需要分号,因此您可以说这也提高了一致性。@b我很想这样做,但显然我的声誉不足以提高投票率:(,对不起。