簡體   English   中英

從 R 中的數據框列表中刪除特定數據框

[英]Remove specific data frames from a list of data frames in R

我已閱讀並使用了以下問題的答案( 從 R 中的數據框列表中刪除特定數據框),其中要從列表中刪除一個特定數據框。 我現在需要以此為基礎,但正在努力尋找正確的解決方案。 我有一個包含 48 個數據框的列表,想從列表中刪除幾個項目,是否有類似的代碼可以使用?

使用與類似問題相同的示例,如果刪除 $d2 是my.list = my.list[-2] ,我將如何刪除 $d2、$d3 和 $d6 - 理想情況下是同時刪除,或者一次刪除一個時間?

連續編寫相同的代碼似乎不起作用,例如。

my.list = my.list[-2]
my.list = my.list[-3] #or should this be [-2] as [3] has become [2] when i removed the original [2]
my.list = my.list[-6] #same again



my.list
$d1
  y1 y2
1  1  4
2  2  5
3  3  6

$d2
  y1 y2
1  3  6
2  2  5
3  1  4

$d3
  y1 y2
1  1  4
2  2  5
3  3  6

$d4
  y1 y2
1  3  6
2  2  5
3  1  4

$d5
  y1 y2
1  1  4
2  2  5
3  3  6

$d6
  y1 y2
1  3  6
2  2  5
3  1  4

使用數字索引的評論中有各種有效答案。 這是另一個:

my.list2 <- my.list[ !    #negation operator
                         names(my.list) %in% c('d2','d3','d6') ]  #logical index
#check
> my.list2
$d1
  y1 y2
1  1  4
2  2  5
3  3  6

$d4
  y1 y2
1  3  6
2  2  5
3  1  4

$d5
  y1 y2
1  1  4
2  2  5
3  3  6

您的嘗試失敗的原因是my.list的值序列在您刪除第一項后立即更改。 請注意,我分配給了一個不同的命名項。 這是一個更安全的策略。

我添加一個邏輯索引方案的演示的原因是它具有優越的通用性。 您可以改為使用sapply定義您可能在每個項目上使用的sapply 結果的邏輯向量可用作選擇向量。

測試示例:

dput(my.list)
list(d1 = structure(list(y1 = 1:3, y2 = 4:6), class = "data.frame", row.names = c("1", 
"2", "3")), d2 = structure(list(y1 = 3:1, y2 = 6:4), class = "data.frame", row.names = c("1", 
"2", "3")), d3 = structure(list(y1 = 1:3, y2 = 4:6), class = "data.frame", row.names = c("1", 
"2", "3")), d4 = structure(list(y1 = 3:1, y2 = 6:4), class = "data.frame", row.names = c("1", 
"2", "3")), d5 = structure(list(y1 = 1:3, y2 = 4:6), class = "data.frame", row.names = c("1", 
"2", "3")), d6 = structure(list(y1 = 3:1, y2 = 6:4), class = "data.frame", row.names = c("1", 
"2", "3")))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM