【发布时间】:2015-07-22 09:13:26
【问题描述】:
我有一个包含 2200 行的数据集。我必须一次删除大量列(例如:大约 400 列)。此操作非常频繁地发生,并且要删除的列每次都不同。要删除的列将位于文本文件中。
这就是我解决这个问题的方法。
#Reading data
myData = read.csv("myDataFile.csv")
#Getting the column names which should be deleted
colToDelete = read.table("columnsToBeRemoved.txt")
#processing the names list
tempList = as.character(unlist(colToDelete))
cat(paste(shQuote(tempList, type="cmd"), collapse=","))
newDataSet = subset(myData, select = - ??)
我使用cat(paste(shQuote(tempList, type="cmd"), collapse=",")) 来获取逗号分隔字符串中的名称列表。这个的输出是
“04_ic_1306”,“13_iecdh1_1363”,“18_iechs_1320”,“26_iecsms35_1347”,“33_iecs_1301”,“34_iecumn_1333”,“36_ieko11_1354”,“39_ijo1366”,“47_iz_1308”,“54_ISFXV_1172”。
我尝试了子集和 data.table 方法,但我没有使用这两种方法。我收到以下错误。我无法为 select 命令指定字符串。
-a 中的错误:一元运算符的参数无效
我主要指的是这个previous stackoverflow question。
【问题讨论】:
-
因为你没有给出一个可重复的例子,我不得不猜测,但
subset(d, select=setdiff(names(d), tempList)可能会起作用。有关可重现的示例,请参阅stackoverflow.com/questions/5963269/… -
嗨,Kasterma,抱歉之前的评论。你的方法工作得很好。谢谢你的回答。
标签: r dynamic dataframe multiple-columns