我试图遍历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
})
这是我在这里的第一个问题,我希望这对你有意义。