Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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循环中的For循环?_R_Loops_For Loop_Dataframe_For In Loop - Fatal编程技术网

For循环中的For循环?

For循环中的For循环?,r,loops,for-loop,dataframe,for-in-loop,R,Loops,For Loop,Dataframe,For In Loop,我有两个数据帧: df1<- as.data.frame(matrix(1:15, ncol=5)) df2<- as.data.frame(matrix(30:44,ncol=5)) df1包含所有X值,df2数据帧的每一行包含用于计算平均值和sd的值。 我生成一个循环,为df1第一列中的每个值计算z分数。但现在我的问题是:如何计算整个数据帧的z分数 test <- list() for (i in 1:nrow(df1) { zscore<- (df1[i,1]

我有两个数据帧:

df1<- as.data.frame(matrix(1:15, ncol=5))
df2<- as.data.frame(matrix(30:44,ncol=5))
df1包含所有X值,df2数据帧的每一行包含用于计算平均值和sd的值。 我生成一个循环,为df1第一列中的每个值计算z分数。但现在我的问题是:如何计算整个数据帧的z分数

test <- list()
for (i in 1:nrow(df1) {
  zscore<- (df1[i,1] - (apply(df2[i,],1,mean))) / (apply(df2[i,],1,sd))
  test[[i]] <- matrix(zscore)
  i <- 1+1
}

谢谢大家!

[我认为这里的行/列倒过来了。z分数通常应用于变量,R希望这些变量在列中。我在下面写的内容遵循通常的惯例。如果确实想按行进行标准化,请相应更改。]

清扫是你的普通朋友。我们计算平均值和标准偏差,然后将其从数据帧df1中扫减:

我们可以通过以矢量化方式对df3的第一列进行计算来检查这一点:

R> (df1[,1] - mean(df2[,1])) / sd(df2[,1])
[1] -30 -29 -28
对于这种特殊情况,还可以使用比例功能,并提供自己的中心和比例、各自的平均值和标准偏差

R> scale(df1, center = mns, scale = sds)
      V1  V2  V3  V4  V5
[1,] -30 -30 -30 -30 -30
[2,] -29 -29 -29 -29 -29
[3,] -28 -28 -28 -28 -28
attr(,"scaled:center")
V1 V2 V3 V4 V5 
31 34 37 40 43 
attr(,"scaled:scale")
V1 V2 V3 V4 V5 
 1  1  1  1  1

[我认为这里的行/列是倒过来的。z分数通常应用于变量,R应该在列中。我在下面写的内容遵循通常的惯例。如果确实想按行进行标准化,请相应更改。]

清扫是你的普通朋友。我们计算平均值和标准偏差,然后将其从数据帧df1中扫减:

我们可以通过以矢量化方式对df3的第一列进行计算来检查这一点:

R> (df1[,1] - mean(df2[,1])) / sd(df2[,1])
[1] -30 -29 -28
对于这种特殊情况,还可以使用比例功能,并提供自己的中心和比例、各自的平均值和标准偏差

R> scale(df1, center = mns, scale = sds)
      V1  V2  V3  V4  V5
[1,] -30 -30 -30 -30 -30
[2,] -29 -29 -29 -29 -29
[3,] -28 -28 -28 -28 -28
attr(,"scaled:center")
V1 V2 V3 V4 V5 
31 34 37 40 43 
attr(,"scaled:scale")
V1 V2 V3 V4 V5 
 1  1  1  1  1
R> scale(df1, center = mns, scale = sds)
      V1  V2  V3  V4  V5
[1,] -30 -30 -30 -30 -30
[2,] -29 -29 -29 -29 -29
[3,] -28 -28 -28 -28 -28
attr(,"scaled:center")
V1 V2 V3 V4 V5 
31 34 37 40 43 
attr(,"scaled:scale")
V1 V2 V3 V4 V5 
 1  1  1  1  1