我需要你的帮助。我想在不同的数据集上运行一个代码。它们被称为dfQB,dfRB,dfOL,dfFB,dfWR,dfTE,dfST,dfDB,dfLB,dfDL和dfDE。我有这个代码。是否可以添加第二个循环,为上面提到的每个数据集执行此代码?非常感谢帮助!
for(i in 1:nrow(df)){
ecdf_fun <- function(x,perc) ecdf(x)(perc)
de=df[i,5:10]
a=(1-ecdf_fun(df$Forty,de[1]))
b=(ecdf_fun(df$Vertical,de[2]))
c=(ecdf_fun(df$BenchReps,de[3]))
d=(ecdf_fun(df$BroadJump,de[4]))
e=(1-ecdf_fun(df$Cone,de[5]))
f=(1-ecdf_fun(df$Shuttle,de[6]))
nenner=6-sum(is.na(a), is.na(b),is.na(c), is.na(d),is.na(e), is.na(f))
if (is.na(a)) {a <- 0}
if (is.na(b)) {b <- 0}
if (is.na(c)) {c <- 0}
if (is.na(d)) {d <- 0}
if (is.na(e)) {e <- 0}
if (is.na(f)) {f <- 0}
df$RAS[i]=((a+b+c+d+e+f)/nenner)*10
}
得到适当的帮助!
3条答案
按热度按时间jq6vz3qz1#
首先,避免在全局环境中将许多类似结构的 Dataframe 作为单独的对象维护。相反,store such similar data frames in a list。从那里,您可以在列表中运行
lapply
,以统一应用于任何定义的或用户定义的方法。如果 Dataframe 碰巧源自按位置拆分的主 Dataframe ,请使用
by
(tapply
的面向对象 Package 器)对拆分应用用户定义方法:zlhcx6iw2#
您可以将data.frames放在一个列表中,并使用
purrr::map
迭代每个元素。57hvy0tb3#
如果您不打算将 Dataframe 分配给列表,另一种方法是简单地在向量中列出 Dataframe 名称,并在
lapply()
函数中使用get()
从父环境访问对象。如果没有一个最小的可重复的示例,执行此操作的代码看起来如下所示:
此时,对象
updatedData
是 Dataframe 的列表。作为最小的可复制的例子,我们将下载和更新一列从九代神奇宝贝统计。
首先,我们将下载数据并将其解压缩到当前工作目录的子目录中。
接下来,我们将创建一个包含下载的.csv文件的vector。
接下来,我们使用文件名向量将数据读入 Dataframe ,并通过
assign()
函数将它们分配为全局环境中的 Dataframe 。是的,我知道它是easier to work with the data frames in a list,但这复制了原始帖子的“当前状态”。接下来,我们将创建一个向量来表示我们创建的数据框的名称。
最后,我们在每个 Dataframe 中将
HP
stat乘以10,将 Dataframe 返回到列表中,并比较一个 Dataframe 的原始数据和更新数据。...和输出: