如何在R中编程循环?

如何在R中编程循环?,r,loops,R,Loops,我想在R中编程一个循环来写数据帧 我试过这个: dts诀窍是使用mget在for循环之外,一次获取所有输入数据帧。然后,在循环中,提取感兴趣的列并分配新的数据集 dts <- c("r1", "r2", "r3") r_RAW_list <- mget(paste0(dts, "_RAW")) for(d in dts){ i <- grep(d, names(r_RAW_list)) temp_rRAW <- r_RAW_list[[i]] temp &l

我想在R中编程一个循环来写数据帧

我试过这个:


dts诀窍是使用
mget
for
循环之外,一次获取所有输入数据帧。然后,在循环中,提取感兴趣的列并分配新的数据集

dts <- c("r1", "r2", "r3")
r_RAW_list <- mget(paste0(dts, "_RAW"))

for(d in dts){
  i <- grep(d, names(r_RAW_list))
  temp_rRAW <- r_RAW_list[[i]]
  temp <- data.frame(S = temp_rRAW[["Zeit"]], A = temp_rRAW[["Wert"]])
  assign(d, temp)
}
rm(r_RAW_list, temp_rRAW, temp)

ls(pattern = "^r[[:digit:]]$")
#[1] "r1" "r2" "r3"

r1
#            S           A
#1  -1.2070657 -0.47719270
#2   0.2774292 -0.99838644
#3   1.0844412 -0.77625389
#4  -2.3456977  0.06445882
#5   0.4291247  0.95949406
#6   0.5060559 -0.11028549
#7  -0.5747400 -0.51100951
#8  -0.5466319 -0.91119542
#9  -0.5644520 -0.83717168
#10 -0.8900378  2.41583518

dts您在谈论哪些值?尽管有更好的解决方案,但请尝试将
paste0(dt,“\u RAW$Zeit”)
替换为
get(paste0(dt,“\u RAW”)$Zeit
。请注意,对象名
r1_RAW$Zeit
和表示它的字符向量
“r1_RAW$Zeit”
之间存在差异。感谢您抽出时间,但不幸的是,它不起作用。我得到
错误:$运算符对原子向量无效
。什么是更好的解决方案?请给我一个提示…注意你的问题不是。例如,什么是
r*_原始
对象?这些是从csv文件导入的数据帧。
set.seed(1234)
n <- 10
r1_RAW <- data.frame(Zeit = rnorm(n), Wert = rnorm(n), Other = rnorm(n))
r2_RAW <- data.frame(Zeit = rnorm(n), Wert = rnorm(n), Other = rnorm(n))
r3_RAW <- data.frame(Zeit = rnorm(n), Wert = rnorm(n), Other = rnorm(n))