除了名爲「dd」的數據框和其他以「temp」(模式)開頭的數據框之外,我想清除我的R環境。 我已經嘗試了以下代碼的不同修改,但是我無法使其工作。任何想法非常感謝!從R環境中刪除除了特定項目和其他模式以外的所有內容
要刪除一切,除了 「DD」:
rm(list=ls()[!ls() %in% c("dd")])
要刪除含有 「臨時」 的一切:
rm(list = ls(pattern = "temp"))
我想保持在開頭的環境 「DD」 和什麼「溫度」。
除了名爲「dd」的數據框和其他以「temp」(模式)開頭的數據框之外,我想清除我的R環境。 我已經嘗試了以下代碼的不同修改,但是我無法使其工作。任何想法非常感謝!從R環境中刪除除了特定項目和其他模式以外的所有內容
要刪除一切,除了 「DD」:
rm(list=ls()[!ls() %in% c("dd")])
要刪除含有 「臨時」 的一切:
rm(list = ls(pattern = "temp"))
我想保持在開頭的環境 「DD」 和什麼「溫度」。
使用正則表達式確實是這裏的關鍵。讓我們把幾個變量:
obj <- c("dd", "temp1","temmie", "atemp")
for(i in obj) assign(i, rnorm(10))
給出:
> ls()
[1] "atemp" "dd" "i" "obj" "temmie" "temp1"
現在是2個步驟:首先構造一個正則表達式:
這與下面的代碼所做的一切:
toremove <- grep("^temp|^dd$", ls(),
invert = TRUE,
value = TRUE)
現在,你可以簡單地:
> rm(list = c(toremove, "toremove"))
> ls()
[1] "dd" "temp1"
您不應該忘記刪除對象的列表,在撥打ls()
123.後生成一個。
完美,非常感謝! – user3262756
分割線將使其更容易編寫和閱讀:
allInMem <- ls()
toRemove <- allInMem[grep("a|c",allInMem,invert=TRUE)]
rm(list=c(toRemove,"allInMem","toRemove"))
PART 1
a=23
dd=45
c=36
d=67
x=ls()
x[x != "dd"];
a" "c" "d"
rm(list=x[x != "dd"])
ls()
[1] "dd" "x"
rm(x)
ls()
[1] "dd"
PART2
Let temp be the pattern in name of object
temp =23
b=45
c=36
dd=67
temp1=20
temp2=40
temp3=50
x=ls()
grepl("temp",x)
[1] TRUE TRUE TRUE TRUE FALSE FALSE FALSE
x[x = grepl("temp",x)]
[1] "temp" "temp1" "temp2" "temp3"
x[x != grepl("temp",x)]
[1] "temp" "temp1" "temp2" "temp3" "b" "c" "d"
x
[1] "temp" "temp1" "temp2" "temp3" "b" "c" "d"
x[x!=x[x = grepl("temp",x)]]
[1] "b" "c" "d"
rm(list=x[x!=x[x = grepl("temp",x)]])
Warning message:
In x != x[x = grepl("temp", x)] :
longer object length is not a multiple of shorter object length
ls()
[1] "temp" "temp1" "temp2" "temp3" "x"
rm(x)
ls()
[1] "temp" "temp1" "temp2" "temp3"
PART 3 Combining them all
temp =23
b=45
c=36
dd=67
temp1=20
temp2=40
temp3=50
x=ls()
#USING AND CONDITION
rm(list=x[x != "dd" & x!=x[x = grepl("temp",x)]])
Warning message:
In x != x[x = grepl("temp", x)] :
longer object length is not a multiple of shorter object length
> ls()
[1] "dd" "temp" "temp1" "temp2" "temp3"
感謝您的代碼!問題是我在環境中一起使用了dd和temp文件。所以,這個解決方案並不適合。 – user3262756
謝謝澄清。我創建了一個AND條件。請運行上面的代碼,讓我知道它是否工作。謝謝。 –
道歉,只是更新了我的問題。 – user3262756
這實際上是一個正則表達式問題。你應該在'pattern'中使用正則表達式。然而,更重要的是,爲什麼這些「臨時」對象不能很好地組合在一個列表中? – Roland