如何在R中自动选取循环生成索引对应的DataFrame行?
解决DataFrame循环选行结果被覆盖的问题
你的代码问题出在每次循环都直接给rows赋值新的单行数据,之前的结果会被直接覆盖,所以最后只保留了最后一次循环的行。下面给两种可行的解决方法:
方法一:一次性选取(推荐,R中更高效)
先把所有需要的索引收集到一个向量里,然后直接从DataFrame中选取对应行,完全不需要循环:
- 把你的索引(a1、a2、a3...)整理成一个向量,比如:
selected_indices <- c(a1, a2, a3)
如果这些索引是存储在ts_niv的某一列里(比如列名叫index_col),可以直接提取:
selected_indices <- ts_niv$index_col
- 用这个向量一次性选取所有目标行:
rows <- timeseries_df[selected_indices, ]
方法二:循环中追加行(不推荐,仅当必须用循环时使用)
如果一定要用循环实现,需要先初始化一个空的DataFrame,然后每次循环用rbind()把新行追加进去:
# 初始化空DataFrame rows <- data.frame() for (m in 1:nrow(ts_niv)){ # 假设当前循环要取的索引是near,比如从ts_niv中获取 near <- ts_niv$你的索引列[m] # 追加行到rows中 rows <- rbind(rows, timeseries_df[near, ]) }
注意:这种循环追加的方式在数据量大时效率很低,所以优先用方法一。
内容的提问来源于stack exchange,提问作者Maria Held
相关产品推荐
相关产品推荐

