2

'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
}

これは機能しません、私は何が欠けていますか?

4

2 に答える 2

3

これは実際にはこれを行うための最適な方法ではありませんが、これは特定の例を機能させる 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
于 2012-10-15T14:27:47.273 に答える
2

ジャスティンが述べたように、Rの方法はリストを使用することです。したがって、データフレーム名は文字列としてのみ存在するため、それらをリストにコピーできます。

frames <- lapply(c("first", "second", "third"), get)
(frames <- lapply(frames, function(x) {x[1,1] <- 0; x}))

ただし、のコピーで作業しfirstsecondthirdますframes

于 2012-10-15T15:04:20.703 に答える