R循环操作时如何将提取的日期存入turning_point_dates数据框?
问题原因
你初始化的turning_point_dates是0列的空数据框,没有预留存储日期的列结构,循环赋值时无法写入内容,最终只会生成带行号的空数据框。
解决方法
方案1:修改原有循环逻辑
调整初始化代码,提前定义带日期列的空数据框,循环中对指定列赋值即可:
dates = data.frame(Date = seq(from = as.Date("2002-06-01"), to = as.Date("2011-09-30"), by = 'day')) nums = c(98,99,100,101,102,103,104,105,106,107) dataframe_of_numbers = data.frame(nums) # 初始化带Date列的空数据框,指定日期类型 turning_point_dates = data.frame(Date = as.Date(character(), origin = "1970-01-01")) for (i in 1:nrow(dataframe_of_numbers)){ print(dates$Date[dataframe_of_numbers[i,]]) turning_point_dates[i,"Date"] = dates$Date[dataframe_of_numbers[i,]] } turning_point_dates
方案2:使用向量化操作(更简洁,无需循环)
R支持直接通过索引批量提取值,不需要写循环遍历,一行代码即可得到结果:
dates = data.frame(Date = seq(from = as.Date("2002-06-01"), to = as.Date("2011-09-30"), by = 'day')) nums = c(98,99,100,101,102,103,104,105,106,107) dataframe_of_numbers = data.frame(nums) # 直接索引提取对应日期,生成单列数据框 turning_point_dates = data.frame(Date = dates$Date[dataframe_of_numbers$nums]) turning_point_dates
两种方案运行后都可以得到你期望的、存储了对应日期的单列数据框。
内容的提问来源于stack exchange,提问作者Mind Numb
相关产品推荐
相关产品推荐

