将多维列表的列清零

时间:2017-10-18 18:04:58

标签: r multidimensional-array

我一直在撞墙试图解决这个问题。为了避免for循环,我想将已经有值的列归零。

以下是列表l:

中的数据片段
[[1]]
                      name team bye fpts
1             Arian Foster  Hou   7  315
2          Adrian Peterson  Min   4  233
3           Jamaal Charles   KC   4  225
4            Peyton Hillis  Cle   8  223
5            Chris Johnson  Ten   9  218 

[[2]]
                      name team bye fpts
1                 Ray Rice  Bal   5  287 
2             LeSean McCoy  Phi   7  271
3       Maurice Jones-Drew  Jax   9  250
4             Arian Foster  Hou  11  241
5           Michael Turner  Atl   8  205

[[3]]
                      name team bye fpts
1          Adrian Peterson  Min  11  299
2             Arian Foster  Hou   8  250
3              Doug Martin   TB   5  249
4           Marshawn Lynch  Sea  11  236
5            Alfred Morris  Was  10  233

以下是我要执行的代码

  ldims = length(l) # where l is a 7 dimension list

  # clear out all fpts values 
  for(i in 1:ldims)
  {
     l[[i]][, 4] = 0.0 # for all elements in column 4, assign it zero
  }

这就是我想要完成的事情:

[[1]]
                      name team bye fpts
1             Arian Foster  Hou   7  0
2          Adrian Peterson  Min   4  0
3           Jamaal Charles   KC   4  0
4            Peyton Hillis  Cle   8  0
5            Chris Johnson  Ten   9  0 

[[2]]
                      name team bye fpts
1                 Ray Rice  Bal   5  0 
2             LeSean McCoy  Phi   7  0
3       Maurice Jones-Drew  Jax   9  0
4             Arian Foster  Hou  11  0
5           Michael Turner  Atl   8  0

[[3]]
                      name team bye fpts
1          Adrian Peterson  Min  11  0
2             Arian Foster  Hou   8  0
3              Doug Martin   TB   5  0
4           Marshawn Lynch  Sea  11  0
5            Alfred Morris  Was  10  0

我所做的是遍历列表的维度并将0应用于整个列。这有效但R看起来很笨重(我来自C语言背景)。我觉得应该可以通过applylapply来实现这一目标。

1 个答案:

答案 0 :(得分:0)

复制数据结构,用mtcars替换内部data.frame:

df <- dplyr::bind_rows(L, .id="group")

首先将列表转换为具有新变量的单个data.frame&#34; group&#34;指示原始列表元素。

0.0

然后,您只需将列设置为df$mpg <- 0.0

即可
df <- mutate(df, mpg=0.0)

或者使用dplyr:

group

使用单个data.frame有助于执行大多数常见任务/分析。您可以使用dplyr列轻松进行分组分析(例如使用group_by summarizefrom w3lib.url import url_query_cleaner ... .... def parse_cat(self, response): links = LinkExtractor().extract_links(response) for link in links: url = url_query_cleaner(link.url, ('param2',)) if '/category/' in url: yield response.follow(url, self.parse_cat) if '/product/' in url: yield response.follow(url, self.parse_prod)