一次可能有太多问题,但是我不确定从哪里开始改变我的思维方式。 任务:我想创建和处理各种控制delphi模型的txt文件。我想为此使用R。
文件最初是什么样的:
[submodelname1]
variable1=value1
variable2=value2
[submodelname2]
variable3=value3
variable4=value4
最后,我想根据最多由4个因素定义的特定变体来更改变量。因此,每个变体的文件看起来都与开头相同,但每个变体的值不同。文件名应为:每个变量的Factor1_factor2_factor3_factor4.txt。 在尝试for循环方法时,我已经解决了最后一步。但是当它与许多链接的循环变得太复杂时,我切换到使用列表。
到目前为止我在列表方法上的工作:
# read a sample file to get the desired pattern
file <- read.table(file="file.txt", sep="=", dec=".", header=FALSE,
fill=TRUE, blank.lines.skip = TRUE)
# extracted submodel names in "[]"
sublistnames <- as.factor(droplevels(file[grep("[\b[A-Z0-9]]", file$V1),1]))
# list of data.frame per submodel
ls <- split(file, cumsum(1:nrow(file) %in% grep("[\b[A-Z0-9]]", file$V1)))
# names the lists like the submodels
names(ls) <- sublistnames
现在,列表的每个data.frame的第一行中仍然存在子模型名称,在研究了处理列表的SO线程数小时后,我仍然无法删除它们。我学到了
# this line addresses the rows I want to get rid of, but "<- NULL" doesn't work
lapply(ls, "[", 1, c(1,2))
我如何解决此问题的任何建议?或有任何想法如何以其他方式面对任务?我渴望了解我的想法错误的地方。 预先感谢。
与此同时,我尝试了:
for (i in 1:length(ls)) {
ls[[i]][1,] <- NA
}
ls <- lapply(ls, function(x) x[!is.na(x)])
但是我对输出不满意,我认为还有一种更优雅的方法。
答案 0 :(得分:0)
要删除每个数据框中的第一行,请尝试以下操作:
lapply(ls, function(x) {x <- x[-1, ]})