私は頻繁に使用する2つのコードを使用して、<<-
を使用して関数内からグローバル環境に割り当てます。私はそれがより良い制御を提供し、より予測可能なので私がassign
を使用すべきであることを知っています。私はassign
を使用してのまわりで私の頭をラップしようとしていますが、割り当て使用するコードに<<-
コードを転送することはできません。<<使用を避ける方法 -
FAKEデータセットと<<-
#CREATE A FAKE DATA SET
df <- data.frame(
x.2=rnorm(25),
y.2=rnorm(25),
g=rep(factor(LETTERS[1:5]), 5)
)
#Use split to make a list of data frames
LIST <- split(df, df$g) #split it into a list of data frames
NAMES <- names(LIST) #save the names of this for later use
LIST <- lapply(seq_along(LIST), function(x) as.data.frame(LIST[[x]])[, 1:2])
#THE TWO PIECES OF CODE THAT USE <<-
#Use Global Assignment to Change All Variable Names of Data Frames in a List
lapply(seq_along(LIST), function(x) names(LIST[[x]]) <<-
unlist(strsplit(names(LIST[[x]])[1:length(names(LIST[[x]]))],
".", fixed=T))[c(T, F)]
)
LIST
#Rename All the Data Frames in the List Using Global Assignment
lapply(seq_along(LIST), function(x) names(LIST)[[x]] <<- NAMES[x])
LIST
WITH CODEを2枚私の使用しようとする試み:
lapply(seq_along(LIST), function(x) {
assign(names(LIST[[x]]),
unlist(strsplit(names(LIST[[x]])[1:length(names(LIST[[x]]))],
".", fixed=T))[c(T, F)], envir=.GlobalEnv)
}
)
LIST
lapply(seq_along(LIST), function(x) assign(names(LIST)[[x]],
NAMES[x], envir=.GlobalEnv))
LIST
私はこれを正しく行い、私のアプローチに間違っている点を助けてください。前もって感謝します。
オブジェクトの名前は環境内の 'name'ではないので、ここで' assign'を使うことはできません。 – kohske
@kohskeありがとうございます。あなたは答えを与えることができますそれを受け入れるでしょうか? –