在R中迭代地改变数据帧
我收到3个数据帧(培训、验证和测试),其中包含具有相同变量的数据。我不希望它们包含在列表中,这样我就可以将它们整齐地称为在R中迭代地改变数据帧,r,R,我收到3个数据帧(培训、验证和测试),其中包含具有相同变量的数据。我不希望它们包含在列表中,这样我就可以将它们整齐地称为trn、vld、和tst,而不是list[[1]]等 我需要从所有数据集中删除变量。有没有一种方法可以在不首先创建列表、迭代然后从列表中重新创建数据帧的情况下进行迭代处理?i、 e.我目前正在做一些事情,比如: trn <- read.csv("training_split_60pct.csv") vld <- read.csv("validation_split_
trn
、vld
、和tst
,而不是list[[1]]
等
我需要从所有数据集中删除变量。有没有一种方法可以在不首先创建列表、迭代然后从列表中重新创建数据帧的情况下进行迭代处理?i、 e.我目前正在做一些事情,比如:
trn <- read.csv("training_split_60pct.csv")
vld <- read.csv("validation_split_20pct.csv")
tst <- read.csv("test_split_20pct.csv")
# a list of variables to drop
drops <- c("ONE", "TWO", "THREE", "FOUR")
dfRawList <- list(trn, vld, tst)
dfList <- lapply(dfRawList, function(df) df[,!(names(df) %in% drops)])
names(dfList) <- c("trn", "vld", "tst")
trn <- dfList[["trn"]]
vld <- dfList[["vld"]]
tst <- dfList[["tst"]]
trn您可以使用assign
和get
执行此操作。但我建议您使用列表和lappy
,就像您目前所做的那样
for (df in c("trn", "vld", "tst")){
assign(df, get(df)[, !names(get(df)) %in% drops])
}
您似乎知道R中的推荐方法。我建议您使用它。@shadow:谢谢您的回答。我对R很陌生,所以道歉。是否有一些例子说明为什么建议这样做?
for (df in c("trn", "vld", "tst")){
assign(df, get(df)[, !names(get(df)) %in% drops])
}