Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/65.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_Dataframe_Environment Variables - Fatal编程技术网

R 如何根据列数删除某些数据帧?

R 如何根据列数删除某些数据帧?,r,dataframe,environment-variables,R,Dataframe,Environment Variables,我只想从环境中删除一些数据帧。因为我有400多个数据帧,所以我想根据列数进行选择 但是,我尝试了下面的代码,但它不起作用 # Select data tables dfs <- ls() dfs <- dfs[grepl(".csv", dfs)] myfilenames <- list.files(inputdir, pattern = ".csv$") storage <- data.frame(matrix(nrow=length(myfilenames), nc

我只想从环境中删除一些数据帧。因为我有400多个数据帧,所以我想根据列数进行选择

但是,我尝试了下面的代码,但它不起作用

# Select data tables
dfs <- ls()
dfs <- dfs[grepl(".csv", dfs)]

myfilenames <- list.files(inputdir, pattern = ".csv$")
storage <- data.frame(matrix(nrow=length(myfilenames), ncol=1))

# Filter for 25 columns
for (i in seq_along(dfs)){
  dat <- get(dfs[i])
  if(ncol(dat)!=25){
      storage[i,1] <- dfs[i]
  } 
}

# Delete
todelete <- storage[,1]
rm(todelete)
预期结果:全局环境中只保留25列的数据帧 实际结果:未删除任何内容


非常感谢你的帮助

todelete向量是否包含所需的值?当您执行rmtodelete时,您删除的是该向量,而不是向量中具有名称的变量。要将名称向量传递给rm,请使用list=参数:rmlist=todelete。有关详细信息,请参见?rm帮助页。在代码中,我对我们处理的字符串是文件路径还是环境对象的名称感到困惑。就好像这些对象是以它们来自的文件命名的。是这样吗?谢谢你,list=todelete成功了!在您的环境中超过400个数据帧是不好的做法。将它们放在列表中: