Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/64.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.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
基于R中行的标准偏差从矩阵中删除一列数据_R - Fatal编程技术网

基于R中行的标准偏差从矩阵中删除一列数据

基于R中行的标准偏差从矩阵中删除一列数据,r,R,我试图对大型数据矩阵进行子集划分,其示例如下: row 1/col 1 row 1/col 2 row 1/col 3 [1,] 855.815 749.574 754.950 [2,] 855.718 749.496 755.004 [3,] 855.846

我试图对大型数据矩阵进行子集划分,其示例如下:

                row 1/col 1         row 1/col 2         row 1/col 3
 [1,]             855.815             749.574             754.950
 [2,]             855.718             749.496             755.004
 [3,]             855.846             749.359             754.910
 [4,]             855.746             749.299             754.795
 [5,]             855.805             749.421             754.883
我尝试删除第一行的值高于或低于整个第一行平均值一个标准偏差的列,使用以下代码:

library(matrixStats)
x = data[,-1] > (rowMeans(data[,-1]) + rowSds(data[,-1]))
y = data[,-1] < (rowMeans(data[,-1]) - rowSds(data[,-1]))
subset(df2, !(x | y))
据我所知,R将其扩展为:

subset(df2, !(data[,-1] > (rowMeans(data[,-1]) + rowSds(data[,-1]))|data[,-1] < (rowMeans(data[,-1]) - rowSds(data[,-1]))))
子集(df2,!(数据[,-1]>(行均值(数据[,-1])+行数据集(数据[,-1]))|数据[,-1]<(行均值(数据[,-1])-行数据集(数据[,-1]))
逻辑论点太长了。我有什么遗漏吗?我对R缺乏经验,并且肯定有更简洁的方法来实现这一点,但从我所读到的内容来看,我认为子集将是最有用的

提前感谢您。

您可以尝试以下方法:

df <- as.matrix(read.table(text='C1 C2 C3
                 [1,]             855.815             749.574             754.950
                 [2,]             855.718             749.496             755.004
                 [3,]             855.846             749.359             754.910
                 [4,]             855.746             749.299             754.795
                 [5,]             855.805             749.421             754.883', header=TRUE))

library(matrixStats)
df[,which(abs(df[1,] - rowMeans(df)[1]) < rowSds(df)[1])]

#      C2      C3
#[1,] 749.574 754.950
#[2,] 749.496 755.004
#[3,] 749.359 754.910
#[4,] 749.299 754.795
#[5,] 749.421 754.883

df请使用
dput
显示示例。此外,当您使用不属于base R一部分的软件包中的函数时,指出这一点很有帮助。在本例中,通过使用
library(matrixStats)
G5W开始您的代码-我已经用它开始了我的代码?感谢您的回复-这对于我作为示例共享的数据非常有效。但是,当我将其应用于整个数据集并使用dim()查看列是否已被删除时,它仍然保持不变。对不起,我太傻了-谢谢你的帮助!
df <- as.matrix(read.table(text='C1 C2 C3
                 [1,]             855.815             749.574             754.950
                 [2,]             855.718             749.496             755.004
                 [3,]             855.846             749.359             754.910
                 [4,]             855.746             749.299             754.795
                 [5,]             855.805             749.421             754.883', header=TRUE))

library(matrixStats)
df[,which(abs(df[1,] - rowMeans(df)[1]) < rowSds(df)[1])]

#      C2      C3
#[1,] 749.574 754.950
#[2,] 749.496 755.004
#[3,] 749.359 754.910
#[4,] 749.299 754.795
#[5,] 749.421 754.883