循环数据框并附加到新的空数据框

时间:2017-08-29 21:54:04

标签: r for-loop dataframe

我的csv文件包含这样的数据

     a   b     c     
     1   2  'some string1' 
     1   54 'some string2' 
     2   87 'some string3' 
     3   18 'some string4'

我需要遍历每个数据并将数据复制到另一个数据帧。所以我需要这样的东西

df <- read.csv("example.csv", sep='\t', header=TRUE)
new_df <- data.frame(a=NA, b=NA, c=NA)
for (row in df){
 #some calculation here then
 append(row to new_df)
}
save the new_df to a new csv.

我该怎么做?我找到了很多解决方案,但对我来说似乎都很困惑。

2 个答案:

答案 0 :(得分:1)

循环和追加是创建新数据框架的一种非常低效的方法。大多数R程序员会建议您使用apply系列中的函数或较新的包(例如dplyrpurrr)来转换原始数据框。

有助于了解示例代码中的“某些计算”。但是,比方说,你想要多列a乘以6.“dplyr way”可能是:

library(dplyr)
new_df <- df %>% 
  mutate(a = a * 6)

答案 1 :(得分:0)

我将在此处调用#some计算,然后some_calculation。然后,您可以使用旧行的行构建新数据框: new_df <- apply(df, 1, some_calculation) 然后使用前面指出的rbind将其附加到旧版本。