我从R中的多个csv文件导入一些列。我想删除第1472行之后的所有数据。
temp = list.files(pattern="*.csv") #Importing csv files
Normalyears<-c(temp[1],temp[2],temp[3],temp[5],temp[6],temp[7],temp[9],temp[10],temp[11],temp[13],temp[14],temp[15],temp[17],temp[18],temp[19],temp[21],temp[22],temp[23])
leapyears<-c(temp[4],temp[8],temp[12],temp[16],temp[20]) #separating csv files with based on leap years and normal years.
Importing only the second column of each csv file.
myfiles_Normalyears = lapply(Normalyears, read.delim,colClasses=c('NULL','numeric'),sep =",")
myfiles_leapyears = lapply(leapyears, read.delim,colClasses=c('NULL','numeric'),sep =",")
new.data.leapyears <- NULL
for(i in 1:length(myfiles_leapyears)) {
in.data <- read.table(if(is.null(myfiles_leapyears[i])),skip=c(1472:4399),sep=",")
new.data.leapyears <- rbind(new.data.leapyears, in.data)}
循环假设删除从1472到4399的所有行。
Error: Error in read.table(myfiles_leapyears[i], skip = c(1472:4399), sep = ",") :
'file'必须是字符串或连接
答案 0 :(得分:1)
nrows
有一个read.table
参数,为什么不尝试
read.table(myfiles_leapyears[i], nrows = 1471,sep=",")
答案 1 :(得分:0)
很好。我只是将列表中的数据转换为数据帧。
df <- as.data.frame(myfiles_leapyears,byrow=T)
leap_df<-head(df,-2928)
答案 2 :(得分:0)
您的myfiles_leapyears
是list
。在对列表进行子集化时,您需要使用双括号来访问单个元素,否则您只需获得长度为1的子列表。
所以替换
myfiles_leapyears[i]
与
myfiles_leapyears[[i]]
至少会处理invalid subscript type 'list'
错误。我的第二个Josh W.认为nrows
论证似乎比skip
论证更聪明。
或者,如果您使用sapply
(“s”表示简化)而不是lapply
(列表中的“l”)进行定义,那么使用[i]
可能会很好:< / p>
myfiles_leapyears = lapply(leapyears, read.delim,colClasses=c('NULL','numeric'),sep =",")