'first'、'second'、'third'という3つのデータフレームがあります
名前が入った文字列ベクトルもあります
frames <- c("first","second","third")
ベクトルをループしてデータフレームを参照したい
for (i in frames) {
#set first value be 0 in each data frame
i[1,1] <- 0
}
これは機能しません、私は何が欠けていますか?
'first'、'second'、'third'という3つのデータフレームがあります
名前が入った文字列ベクトルもあります
frames <- c("first","second","third")
ベクトルをループしてデータフレームを参照したい
for (i in frames) {
#set first value be 0 in each data frame
i[1,1] <- 0
}
これは機能しません、私は何が欠けていますか?
これは実際にはこれを行うための最適な方法ではありませんが、これは特定の例を機能させる 1 つの方法です。
first <- data.frame(x = 1:5)
second <- data.frame(x = 1:5)
third <- data.frame(x = 1:5)
frames <- c("first","second","third")
for (i in frames) {
df <- get(i)
df[1,1] <- 45
assign(as.character(i), df, envir= .GlobalEnv)
}
> first
x
1 45
2 2
3 3
4 4
5 5
> second
x
1 45
2 2
3 3
4 4
5 5
> third
x
1 45
2 2
3 3
4 4
5 5
ジャスティンが述べたように、Rの方法はリストを使用することです。したがって、データフレーム名は文字列としてのみ存在するため、それらをリストにコピーできます。
frames <- lapply(c("first", "second", "third"), get)
(frames <- lapply(frames, function(x) {x[1,1] <- 0; x}))
ただし、のコピーで作業しfirst
てsecond
いthird
ますframes
。