簡體   English   中英

向data.frames列表的每個元素添加新變量

[英]Adding new variable to each element of a list of data.frames

我有一個數據幀列表(C)。 我想向每個數據幀添加一個新變量“ d”,該變量應為“ a”和“ b”的總和。 這是一個簡短的例子。

A<-data.frame(1:10, 101:110, 201:210)
colnames(A)=c("a","b", "c")

B<-data.frame(11:20, 111:120, 211:220)
colnames(B)=c("a","b", "c")

C<-list(A, B)

我已經嘗試過了,但是我認為可能更簡單一些,特別是考慮該行的最后部分( value= (("["(C[[x]][1]))) + ("["(C[[x]][2])) )

lapply(seq(C), function(x) "[[<-" (C[[x]], 3, value= (("["(C[[x]][1]))) + ("["(C[[x]][2])))

有任何想法嗎? 順便說一句,我如何選擇創建的變量的名稱? 提前感謝

within使用起來應該很容易:

out <- lapply(C, function(x) within(x, d <- a + b))

結果如下:

> str(out)
List of 2
 $ :'data.frame':       10 obs. of  4 variables:
  ..$ a: int [1:10] 1 2 3 4 5 6 7 8 9 10
  ..$ b: int [1:10] 101 102 103 104 105 106 107 108 109 110
  ..$ c: int [1:10] 201 202 203 204 205 206 207 208 209 210
  ..$ d: int [1:10] 102 104 106 108 110 112 114 116 118 120
 $ :'data.frame':       10 obs. of  4 variables:
  ..$ a: int [1:10] 11 12 13 14 15 16 17 18 19 20
  ..$ b: int [1:10] 111 112 113 114 115 116 117 118 119 120
  ..$ c: int [1:10] 211 212 213 214 215 216 217 218 219 220
  ..$ d: int [1:10] 122 124 126 128 130 132 134 136 138 140

你可以的話,存儲out作為C (即C <- out ),以取代原來的列表中。 我只是out這里out ,向您展示發生了什么。

或使用cbind

C <- lapply(C, function(x) cbind(x, d = x[["a"]] + x[["b"]]))

或使用rowSums

C <- lapply(C, function(x) cbind(x, d = rowSums(x[1:2])))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM