R read.csv循环,带引号的迭代变量

问题描述 投票:0回答:1

这是我的代码:

library(data.table)
library(stringr)
parameters <- c("conductivity","calcium","chloride","magnesium","phosphate","potassium","salinity","sodium","sulphate")
for (i in parameters){
  i <- read.csv(str_c("./Data/Parameters/",i,".csv"), sep=",", header=FALSE)
  i <- unique(i)
  i <- subset(i, select=c(1,2,4,6))
  i <- setnames(i, c("site","date", str_c("",i,""), "material"))
  i[,3] <- as.numeric(i[,3])
  i <- subset(i, i > 0)
}

现在,有两件事在这里不起作用。第一个是在setnames函数中:它不了解它是否需要用变量名标记CSV的一列。第二个问题是,它实际上并不使用“电导率”,“钙”等调用导入的文件,而只是将它们全部称为“ i”。我该如何解决?

r loops data.table stringr read.csv
1个回答
0
投票

我们可以用map来做到这一点

files <- str_c(""./Data/Parameters/", parameters, ".csv")
map(parameters, ~ read_csv(str_c(""./Data/Parameters/"str_c(""./Data/Parameters/", .x, ".csv")) %>%
               distinct %>%
                select(1, 2, 4, 6) %>%
                rename_at(3, ~  .x) %>%
                mutate(!! .x := !! rlang::sym(.x)) %>%
                filter_at(vars(.x), any_vars(. > 0))
           )
© www.soinside.com 2019 - 2024. All rights reserved.