R-在循环的数据帧中提取列
我需要保存csv文件列表,并从每个数据帧的特定列(第二列)的第13行提取值 以下是我的尝试: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
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。如果我理解,我需要再次编辑我的答案。请稍等。