[英]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.