将列添加到列表的每个数据框并应用函数

时间:2018-06-18 09:51:15

标签: r list function dataframe

我有一个数据框列表[14](sujets)。我想在列表的每个数据框中添加一列。每个数据框具有相同的列数,但行数不同。

> summary(sujets)
         Length Class      Mode
Sujet 1  85     data.frame list
Sujet2   85     data.frame list  
Sujet 3  85     data.frame list
SUjet 4  85     data.frame list
Sujet 5  85     data.frame list
Sujet 6  85     data.frame list 
Sujet 7  85     data.frame list
Sujet 8  85     data.frame list
Sujet 9  85     data.frame list
Sujet 10 85     data.frame list
Sujet 11 85     data.frame list
Sujet 12 85     data.frame list
SUjet 13 85     data.frame list
Sujet 14 85     data.frame list

在本专栏中,我想应用以下内容:function(x) 0.001*x。 用x表示sujets [[i]] [[86]]的行号,该列添加到每个数据帧。

我尝试了很多不同的选择但没有效果...... 当我尝试向每个数据框添加一个新列时,它的类型因素阻止我应用函数。

非常感谢你的帮助!

更新

感谢您的回答,以下代码最终对我有用:

        for (i in 1:nbrSujet) {
          nrows = nrow(sujets[[i]])
          ncols = ncol(sujets[[i]])
       Timestamp <- c(1:nrows)
         for (j in 1:nrows) {
    Timestamp[j] = 0.001*j
  }

  sujets[[i]]$Timestamp <- Timestamp
}

我在列表的每个数据框中都有一个新列,我应用于每一行[j] function(x) 0.001*x.

很抱歉,如果我的解释不是很清楚,我是R的新手,下次我会更具体:)

1 个答案:

答案 0 :(得分:0)

如果可以,请为我们提供一个玩具示例。

我想到了这个可能的解决方案:

require(dplyr)
l <- lapply(sujets, function(x) {
x <- x %>% mutate(newvariable = 0.001*nrow(x))
})
  

x为sujets [[i]] [[86]]的行号,该列添加到每个数据帧。

这句话对我来说并非100%清楚,我希望我在答案中说得对。