使用用户定义的;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该函数有两个问题:
您正在使用allNA
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我很想这样做,但显然我的声誉不足以提高投票率:(,对不起。