2016-10-19 4 views
0

私は100個以上のdata.frames、それぞれ3列のリストを持っています。ここでlapply - data.frames内の同じ行の他の列に特定の値を割り当てます。

data.framesの1の例:

[[6]] 
      V1  V2  V3 
2   12002      
9 05 Jan 1974 404.074  2.940 
10 12 Jan 1974 477.433  3.235 
11 18 Jan 1974 443.135  3.099 
12 30 Jan 1974 556.402  3.537 
13 22 Nov 1974 534.586  3.455 

私は何を望むことは、他の2列に他の二つの最初の行の値に最初の列の最初の行の値をコピーすることです。

私の結果は、すべてのdata.framesがリストに含まれているために次のようになります。

[[6]] 
      V1  V2  V3 
2   12002  12002  12002   
9 05 Jan 1974 404.074  2.940 
10 12 Jan 1974 477.433  3.235 
11 18 Jan 1974 443.135  3.099 
12 30 Jan 1974 556.402  3.537 
13 22 Nov 1974 534.586  3.455 

n.b.コピーする値が、私は(lapplyを使用せずに)1つのdata.frameのために最初にそれを実行しようとしました

各data.frameに対して異なっており、それが実際に動作します:

list[[1]]$V2[1] = list[[1]]$V1[1] 

しかし、私はそれをしようとするとき、 lapply機能を使って、それはもう動作しません:

list = lapply(list, function(x) x$V2[1] = x$V1[1]) 

私のコードの何が問題になっているのですか?

+0

一つのことは、「リスト」あなたのリストを呼び出すことではない例です。 – roman

+0

ありがとう、私はこれを念頭に置いておきます。 –

答えて

2

割り当て後、df全体を返す必要があります。 emilliman5と同じ

list <- lapply(list, function(x) { 
    x[1,] <- x$V1[1] 
    x 
} 
+0

それは素晴らしいです!私はいつもdfを返すのを忘れてしまった! –

0

、ここのために外を見るために

d <- data.frame(x = 1:3, y = 4:6) 
l <- list(d, d) 
do_this <- function(dat) { 
    dat[1,2] <- dat[1,1] 
    return(dat) 
} 
lapply(l, do_this) 
関連する問題