R-在循环的数据帧中提取列

R-在循环的数据帧中提取列,r,for-loop,subset,read.csv,R,For Loop,Subset,Read.csv,我需要保存csv文件列表,并从每个数据帧的特定列(第二列)的第13行提取值 以下是我的尝试: temp <- list.files(FILEPATH, pattern="*\\.csv$", full.names = TRUE) for (i in 1:length(temp)){ assign(temp[i], read.csv(temp[i], header=TRUE, ski[=13, na.strings=c("", "NA"))) subset(temp[i], se

我需要保存csv文件列表,并从每个数据帧的特定列(第二列)的第13行提取值

以下是我的尝试:

temp <- list.files(FILEPATH, pattern="*\\.csv$", full.names = TRUE)

for (i in 1:length(temp)){ 
  assign(temp[i], read.csv(temp[i], header=TRUE, ski[=13, na.strings=c("", "NA")))
  subset(temp[i], select=2) #extract the second column of the dataframe
  temp[i] <- na.omit(temp[i])

temp看不到文件就很难分辨,但我会使用
lappy
,而不是
for
循环。也许你可以从下面的例子中得到灵感。我使用
read.table
,因为您
skip=13行,并且
read.csv
读取第一行作为列标题。请注意,我避免使用
assign

df_list <- lapply(temp, read.table, sep = ",", skip = 13, na.strings = c("", "NA"))
names(df_list) <- temp
col2_list <- lapply(df_list, `[[`, 2)
col2_list <- lapply(col2_list, na.omit)
names(col2_list) <- temp
col2_list
并重命名该列,并连续对行重新编号

new_name <- "the_column_of_choice"  #  change this!
col2_list <- lapply(col2_list, function(x){
            names(x) <- new_name
            row.names(x) <- NULL
            x
        })

new\u name在没有看到文件的情况下很难分辨,但我会使用
lappy
,而不是
for
循环。也许你可以从下面的例子中得到灵感。我使用
read.table
,因为您
skip=13行,并且
read.csv
读取第一行作为列标题。请注意,我避免使用
assign

df_list <- lapply(temp, read.table, sep = ",", skip = 13, na.strings = c("", "NA"))
names(df_list) <- temp
col2_list <- lapply(df_list, `[[`, 2)
col2_list <- lapply(col2_list, na.omit)
names(col2_list) <- temp
col2_list
并重命名该列,并连续对行重新编号

new_name <- "the_column_of_choice"  #  change this!
col2_list <- lapply(col2_list, function(x){
            names(x) <- new_name
            row.names(x) <- NULL
            x
        })

new\u name是的,我想避免循环,但是我想我确实需要一个
用于
循环,因为我需要对每个数据帧进行进一步操作。@RobertP。但是你可以以后再做,不是吗?您所描述的问题类型在没有显式循环/赋值的情况下可以更好地解决。这就是我一直试图做的。我尤其总是尽量避免
assign
@RobertP。在我的回答中,我忘记了
read.csv
使用的列分隔符。所以我编辑了我的代码,将参数
sep=“,”
。不用担心,反正我使用的是
read.csv
。快速提问-我正在测试您的解决方案,但我不知道如何重命名左侧的一列,以及如何将行名称设置为增量数字…@RobertP。在
lappy(df_列表,
[[
,2)
尝试只使用一个
[
。前者将提取向量,后者是子data.frames。如果我理解了,我需要再次编辑我的答案。请稍等。是的,我想避免循环,但是我想我确实需要一个
来进行
循环,因为我需要对每个数据帧进行进一步操作。@RobertP。但是你可以稍后再做,不是吗?类型o如果没有显式循环/assign,您描述的问题可以更好地解决。这就是我试图做的。我尤其总是尽量避免
assign
@RobertP。在我的回答中,我忘记了
read.csv
使用的列分隔符。所以我编辑了我的代码,以包含参数
sep=“,”
。不用担心,反正我是在使用
read.csv
。快速提问-我正在测试您的解决方案,但我不知道如何重命名左侧的一列,以及如何将行名设置为增量数字…@RobertP。在
lappy(df_list,
[
,2)
尝试只使用一个
[
。前者将提取向量,后者将提取子data.frames。如果我理解,我需要再次编辑我的答案。请稍等。