tctcab 非常感谢您的指导☺!您的思路我大致明白了,但是好像因为一些细节性问题导致报错,所以我擅自做了一些修改?。
在生成df时,因为行数不同而报错:
Error in (function (..., row.names = NULL, check.rows = FALSE, check.names = TRUE, : 参数值意味着不同的行数: 1, 3, 2
所以生成df部分的语句我改为了:
rm(df) # 先把之前产生的df清除掉
df <- data.frame(matrix(NA,ncol=3,nrow=length(ls())+1)) # 因为这张统计表也要统计df自身,所以行数+1。
names(df) <- c("names","size","class")
df$names <- ls()
df$size <- sapply(mget(ls()), object.size)
df$class <- sapply(mget(ls()), class)
由于第三列的格式是list,所以不能用“==”,我改成了“%in%”:
names_rm <- df$names[which(df$class %in% "list" & df$size > 50000)] # 之前用“&&”表示“且”,报错,改用“&”后运行正常,二者的区别我也不太清楚
rm(list=names_rm)
最后再次向大神表示感谢?!尤其是我在这个过程中学习了以下函数:
?sapply
?mget
?object.size
?class