2017-03-08 61 views
0

我想要从列表中删除某些值以创建精炼列表。我想要删除存储在名为remove的字符向量中的所有值。删除中的值对应于列表的第一列。我运行了以下代码:从列表中删除存储在字符向量中的值

refined_list = list 
for (i in length(list)){ 
    if (refined_list[i,1] %in% remove){ 
    refined_list = refined_list[-i,] 
} 
    else{ 
    refined_list = refined_list 
} 
} 

只有精化列表的初始化似乎注册。没有错误,但refined_list与列表完全相同。这对我来说是个谜

+0

您好,欢迎堆栈溢出。也许你可以通过提供你的列表子集和你想要的输出来使这个问题重现。另外,列表对于列表来说是一个糟糕的名字。 – shayaa

+0

假设'lst'是一个'data.frame',只需使用'lst [!lst [,1]%in%remove ,, drop = FALSE] – akrun

回答

0

它似乎并不像你实际上在讨论列表,因为列表不能像你提出的那样是子集(即list[, 1])。但是,如果你正在寻找一个解决方案为data.frame,这里有一个:

# Set up some test data 
dd <- data.frame(letters = letters[1:10], stringsAsFactors = FALSE) 
remove <- letters[c(1, 4, 6)] 

# Shed values that are in remove 
dd[!(dd[, 1] %in% remove), 1, drop = FALSE] 

#> "b" "c" "e" "g" "h" "i" "j"