我的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.
我该怎么做?我找到了很多解决方案,但对我来说似乎都很困惑。
答案 0 :(得分:1)
循环和追加是创建新数据框架的一种非常低效的方法。大多数R程序员会建议您使用apply
系列中的函数或较新的包(例如dplyr
或purrr
)来转换原始数据框。
有助于了解示例代码中的“某些计算”。但是,比方说,你想要多列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
将其附加到旧版本。