2016-06-28 15 views
0

私はコードを実行したい多くのデータフレームを持っています。ループ内でデータフレーム名を変更する方法はありますか?ループ内のデータフレームを変更する

df01$x = rnorm(100) 
df02$x = rnorm(100)+2 
df03$x = rnorm(100)*2 

dflist <- c("df01", 
      "df02", 
      "df03") 
for (i in 1:length(dflist){ 
    { 
    #complete tasks by changing df name in existing code 
    ifelse([[i]]$x > 0,1,[[i]]$x) 
} 
#I want to do this for a number of different fuctions, so it is best to change the df name before "$" 
    df[[i]]$Varible = aggregate(df$Varible, .. ,..)} 
+1

あなたがリストにdata.framesを置く必要があります。方法については、[この記事(http://stackoverflow.com/questions/17499013/how-do-i-make-a-list-of-data-frames)を参照してください。それは、データのリストで作業するための方法の数を提供するgregorsの答えを読んでください。フレーム。 – lmo

答えて

0

リスト内のデータフレームの収集とやりとりし、その名前の文字列リテラルを渡さないことを検討してください。 lapply()機能の中で、あなたはあなたの業務を処理することができ、その後、さらには個々のデータフレームオブジェクトに各バックを変換:

df01 <- data.frame(x=rnorm(100)) 
df02 <- data.frame(x=rnorm(100)+2) 
df03 <- data.frame(x=rnorm(100)*2) 

# LIST OF DATAFRAMES (NAMED WITH LITERALS) 
dfList <- list(df01=df01, df02=df02, df03=df03) 
head(dfList[[1]]) 
#   x 
# 1 1.3440091 
# 2 0.5838570 
# 3 -0.2377477 
# 4 -1.5059733 
# 5 -1.0605490 
# 6 -0.8122972 

# ITERATIVELY RUN COLUMN OPERATION 
dfList <- lapply(dfList, function(df) { 
    df$x <- ifelse(df$x > 0, 1, df$x) 
    return(df) 
}) 

# CONVERT LIST ITEMS INTO INDIVIDUAL ENVIRON OBJECTS 
list2env(dfList, envir=.GlobalEnv) 
head(df01) 
#   x 
# 1 1.0000000 
# 2 1.0000000 
# 3 -0.2377477 
# 4 -1.5059733 
# 5 -1.0605490 
# 6 -0.8122972 
関連する問題