在R中的不同数据框中应用相同的计算

时间:2018-07-17 08:21:42

标签: r loops dataframe

我试图遍历R中的许多数据帧,我觉得这是一个相当基本的问题。但是,我只发现了类似的问题,这些问题是通过与我的问题不匹配的特定函数解决的(例如,计算平均值或中位数,更改列名等)。我希望在这里找到一种更通用的解决方案,该解决方案可以应用于各种数据帧中的任何更改或计算。

我有很多(大约500个)数据帧,看起来像这样(非常简化):

df0100
    a   b   c   d
1   4   3   5  NA
2   2   5   4  NA
3   4   4   3  NA
...

df0130
    a   b   c   d
1   3   2   3  NA
2   4   5   3  NA
3   4   3   2  NA
...

对于每一个,我想从第一行的a和c中的值计算一个新值(在此也简化),并将该值插入d列中的任何行。对于单个数据帧,它的工作原理如下:

df0100$d <- ((df0100[1,1]*(df0100[1,3]+13.5)/(3*exp(df0100[1,3]))/100

导致

df0100
   a   b   c          d
1  4   3   5   36.60858
2  2   5   4   36.60858
3  4   4   3   36.60858
....

由于我不想对500个数据帧中的每个数据帧都执行此操作,因此我将它们保存为列表,并尝试按如下所示遍历它们。我认为最简单的方法是用每个数据框名称替换以前的“ df0100”,但两个版本均不起作用。谁能告诉我我必须改变什么?

my_files <- list.files(pattern=".csv")
my_data <- lapply(my_files, read.csv)

版本1:

for (n in my_data)
{
   n$d <- ((n[1,1]*(n[1,3]+13.5)/(3*exp(n[1,3]))/100
}

版本2:

my_data <- lapply(my_data, function(n){
   n$d <- ((n[1,1]*(n[1,3]+13.5)/(3*exp(n[1,3]))/100
})

这是我在这里的第一个问题,我希望这对你有意义。

0 个答案:

没有答案