2017-02-03 73 views
1

我有一個大型數據集來創建並且分片。我創建了50個數據幀(F1:F50),然後我連同它們合併:R製作對象爲null

for(i in 1:50) {x= get(paste0("F",i)) 
zF <- rbind.fill(zF,x)} 

但是現在我想清除其他對象。

一旦他們NULL我用

rm(list=names(which(sapply(globalenv(),is.null)))) 

也許我可以改變is.null()到類似的東西描述我的對象的模式,但我認爲這將是容易,只需翻閱,使各NULL所以我嘗試嘗試幾次:

> for(i in 1:56) {get(paste0("F",i)) 
    paste("F",i)=NULL} 
Error in paste("F", i) = NULL : 
    target of assignment expands to non-language object 

> for(i in 1:56){get(paste0("F",i))=NULL} 
    Error in get(paste0("F", i)) = NULL : 
     target of assignment expands to non-language object 

那麼,頂圈工作,但這些失敗意味着對我說,雖然get會給你的數據複製(在形式)然後使用,它不允許我改變實際的物體。

有沒有辦法做到這一點還是使用rm的解決方案,我更喜歡前者,因爲它開闢了不是簡單地讓他們擺脫其他物體未來的變化。

回答

1
rm(list = ls(pattern = '^F')) 

刪除匹配的模式(在這種情況下,與「F」開頭的所有對象)

+0

感謝所有對象,有沒有我想這樣做的方式來使用get或情況類似的功能那樣。在我的第一個代碼中使用x就足夠了,但是例如我想要更改每個對象的類,Id必須創建一個虛擬負載,rm原始數據,然後重命名虛擬變量。 – Olivia

+1

您可以使用'ls(pattern = ..)'創建對象列表,然後將您需要的函數與'apply'族一起應用到'get'ted對象: 'my_list < - ls(pattern ='^F'); sapply(my_list,function(x){as.numeric(get(x))})' – GGamba