R 使用 if else 语句从列表中删除对象

标签 r list if-statement for-loop

我有一个数据框列表,想从 mylist 中删除少于 2 行的那些:

a<-data.frame(x=c(1:4),y=c("m", "n", "o", "p"))
b<-data.frame(x=c(2:6),y=c("q", "w", "e", "r", "t"))
c<-data.frame(x=c(6,7),y=c("j","k"),z=c("$","#"))
d<-data.frame(x="9",y="q",z="+")
mylist<-list(a,b,c,d)

for (i in length(mylist)){
if (nrow(mylist[[i]])<=2){
mylist<-mylist[-i]
}
else{
mylist<-myslit
}}

然而,它似乎只删除了 data.frame d。运行 for 循环后,数据框 c 仍在“mylist”中。

最佳答案

您可以使用应用循环更轻松地执行此操作:

row_lt2 <- which(sapply(mylist, nrow) < 2)
mylist[-row_lt2]
[[1]]
  x y
1 1 m
2 2 n
3 3 o
4 4 p

[[2]]
  x y
1 2 q
2 3 w
3 4 e
4 5 r
5 6 t

[[3]]
  x y z
1 6 j $
2 7 k #

请注意,我使用负索引来删除项目而不是选择它们。

关于R 使用 if else 语句从列表中删除对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16177486/

相关文章:

r - 将有关四键的信息加入到平铺 shapefile

python - Pandas drop_duplicates 方法不适用于包含列表的数据框

java - 使用 if 和 else 语句

jquery - 如果选中复选框,请执行此操作

r - 保留具有不同名称的重复列。右

r - 带有计数的堆叠条形图中 geom_text 的百分比

r - 在R Shiny中保存单独的服务器和ui文件是一种好习惯吗?

python - python程序中出现 "List Reversing"错误

java - List<> 更改时是否会更改对 LIst<> 的所有其他引用?

C++ 错误 'else' 没有前一个 'if'