R 如何加速此代码删除某些行?

R 如何加速此代码删除某些行?,r,performance,loops,dataframe,R,Performance,Loops,Dataframe,我有一个data.frame,我想删除第5列条目等于零的行 data.frame如下所示: Column1 Column2 Column3 Column4 Column5 Column6 1 A 3 2 1 1 2 D 2 2 4 1 3 D 4 1 0 2 4 E 4

我有一个
data.frame
,我想删除第5列条目等于零的行

data.frame
如下所示:

Column1 Column2 Column3 Column4 Column5 Column6
1       A         3       2       1       1
2       D         2       2       4       1
3       D         4       1       0       2
4       E         4       1       0       2
5       F         2       1       A       3
因此,在这种情况下,应删除第3列和第4列。我的数据帧被称为

dataframe,目前我使用以下代码:

for(i in 1:length(dataframe[,1])){ 
  if (dataframe[i,5]==0) {
    dataframe2<-dataframe[-i,] 
  } 
}
for(i in 1:length(数据帧[,1]){
if(数据帧[i,5]==0){

dataframe2您应该阅读介绍手册以了解基本的子集设置

df <- df[df$Column5 != 0, ]
##   Column1 Column2 Column3 Column4 Column5 Column6
## 1       1       A       3       2       1       1
## 2       2       D       2       2       4       1
## 5       5       F       2       1       A       3

df您应该阅读一本介绍性手册来理解基本的子集设置

df <- df[df$Column5 != 0, ]
##   Column1 Column2 Column3 Column4 Column5 Column6
## 1       1       A       3       2       1       1
## 2       2       D       2       2       4       1
## 5       5       F       2       1       A       3

df您应该阅读一本介绍性手册来理解基本的子集设置

df <- df[df$Column5 != 0, ]
##   Column1 Column2 Column3 Column4 Column5 Column6
## 1       1       A       3       2       1       1
## 2       2       D       2       2       4       1
## 5       5       F       2       1       A       3

df您应该阅读一本介绍性手册来理解基本的子集设置

df <- df[df$Column5 != 0, ]
##   Column1 Column2 Column3 Column4 Column5 Column6
## 1       1       A       3       2       1       1
## 2       2       D       2       2       4       1
## 5       5       F       2       1       A       3
df我认为:

dataframe2 <- dataframe[dataframe[,5]!=0,] 
一般而言:

  • 按列名编制索引比按数字编制索引更可靠,通常可读性更高(尽管在您的示例中列名没有意义)
  • 使用
    [[]]
    [,]
    进行索引比使用
    $
    进行索引更稳健、更通用(例如,您可以使用动态构造的变量名或
    [[[]]
    中的数字索引,并且只能使用
    $
    的精确名称
  • 子集
    是可读性最强的,但在某些上下文中不太可靠
对于您所描述的大小问题,所有这些方法在速度方面或多或少都是瞬时的/无法区分的。

我认为:

dataframe2 <- dataframe[dataframe[,5]!=0,] 
一般而言:

  • 按列名编制索引比按数字编制索引更可靠,通常可读性更高(尽管在您的示例中列名没有意义)
  • 使用
    [[]]
    [,]
    进行索引比使用
    $
    进行索引更稳健、更通用(例如,您可以使用动态构造的变量名或
    [[[]]
    中的数字索引,并且只能使用
    $
    的精确名称
  • 子集
    是可读性最强的,但在某些上下文中不太可靠
对于您所描述的大小问题,所有这些方法在速度方面或多或少都是瞬时的/无法区分的。

我认为:

dataframe2 <- dataframe[dataframe[,5]!=0,] 
一般而言:

  • 按列名编制索引比按数字编制索引更可靠,通常可读性更高(尽管在您的示例中列名没有意义)
  • 使用
    [[]]
    [,]
    进行索引比使用
    $
    进行索引更稳健、更通用(例如,您可以使用动态构造的变量名或
    [[[]]
    中的数字索引,并且只能使用
    $
    的精确名称
  • 子集
    是可读性最强的,但在某些上下文中不太可靠
对于您所描述的大小问题,所有这些方法在速度方面或多或少都是瞬时的/无法区分的。

我认为:

dataframe2 <- dataframe[dataframe[,5]!=0,] 
一般而言:

  • 按列名编制索引比按数字编制索引更可靠,通常可读性更高(尽管在您的示例中列名没有意义)
  • 使用
    [[]]
    [,]
    进行索引比使用
    $
    进行索引更稳健、更通用(例如,您可以使用动态构造的变量名或
    [[[]]
    中的数字索引,并且只能使用
    $
    的精确名称
  • 子集
    是可读性最强的,但在某些上下文中不太可靠

对于您描述的大小问题,所有这些方法在速度方面或多或少都是瞬时的/无法区分的。

一个小的打字错误,它认为是dataframe[dataframe[,5]!=0,]一个小的打字错误,它认为是dataframe[dataframe[,5]!=0,]一个小的打字错误,它认为是dataframe[dataframe[,5]!=0,]一个小的输入错误,它认为是dataframe[dataframe[,5]!=0,]