与我试图实现我想要的结果有点混淆。
我在R中有一个环境,它包含5个名为df[i]
因此;
df1
df2
df3
df4
df5
在这些df´s
内,我有5列名为col[j]
col1
col2
col3
col4
col5
总共我有5个数据帧(5 df x 5 col)的25列。
我还有一个名为R
的静态变量,它是一个数字向量
我试图使用函数/循环计算每个数据帧的每一列的基本公式。 df1第1列的公式为;
Y = df1$col1 - R
我正在尝试计算这一点并重复colum[j:5]
中的每个df[i:5]
并将其存储在新的data.frame
j <- 1:5
i <- 1:5
fun <- function(x){
for(i in 1:col[j](df[i])){
Y[j] <- col[j] - R
}
}
编辑:在下方添加了评论,以便于阅读。
Y1a = df1$col1 - R
Y2a = df1$col2 - R
Y3a = df1$col3 - R
.....
.....
Y1b = df2$col1 - R
Y2b = df2$col2 - R
Y3b = df2$col3 - R
..... etc
答案 0 :(得分:3)
# Put your data in a list:
dflist = mget(paste0("df", 1:5))
# Apply your function to every data frame
ylist = lapply(dflist, function(x) x - R)
# Name the resulting columns y1:y5
ylist = lapply(ylist, setNames, paste0("y", 1:5))
查看How to make a list of data frames的示例,并讨论为什么使用列表更好。
答案 1 :(得分:1)
tidyverse版
dplyr::mutate_all
将一个函数应用于data.frame的每一列。
所以我会这样做:
all_df <- list(df1, df2, df3, df4, df5)
map(all_df, function(x) mutate_all(x, function(y) y - R))
它应该返回一个长度为5的列表。每个df包含您想要的统计数据。