如何删除R中的空列?

use*_*390 6 csv r

我有一个CSV文件

Identity,Number,Data,Result,Add,,,,,,,,,,,,
1,,,,4,55,,92,,,,,,,,,62,
3,,,,7,43,,12,,,,,,,,,74,
7,,,,3,58,,52,,,,,,,,,64,
0,,,,6,10,,22,,,,,,,,,96,
3,,,,8,13,,92,,,,,,,,,22,
Run Code Online (Sandbox Code Playgroud)

如何删除R中的空列?

期望的输出

Identity,Number,Data,Result,Add
1,4,55,92,62
3,7,43,12,74
7,3,58,52,64
0,6,10,22,96
3,8,13,92,22
Run Code Online (Sandbox Code Playgroud)

amz*_*mzu 8

导入数据后(使用其他回答者建议的方法)运行此命令,替换mydf您决定调用数据框的任何内容:

#Remove empty columns
mydf <- Filter(function(x)!all(is.na(x)), mydf)
Run Code Online (Sandbox Code Playgroud)


Tho*_*mas 0

加载数据文件,不包括标题行:

mydf <- 
read.csv(text='Identity,Number,Data,Result,Add
1,,,,4,55,,92,,,,,,,,,62,
3,,,,7,43,,12,,,,,,,,,74,
7,,,,3,58,,52,,,,,,,,,64,
0,,,,6,10,,22,,,,,,,,,96,
3,,,,8,13,,92,,,,,,,,,22,', header=FALSE, skip=1)
Run Code Online (Sandbox Code Playgroud)

然后仅加载标题行:

n <- read.csv(text='Identity,Number,Data,Result,Add', header=TRUE)
Run Code Online (Sandbox Code Playgroud)

然后使用名称 fromn为完整数据分配名称,不包括NA列:

setNames(mydf[,sapply(mydf, function(x) all(!is.na(x)))],names(n))
Run Code Online (Sandbox Code Playgroud)

请注意,如果您将其保存为文件,则完整代码应为:

mydf <- read.csv('file.csv', header=FALSE, skip=1)
n <- read.csv('file.csv', header=TRUE, nrows=1)
setNames(mydf[,sapply(mydf, function(x) all(!is.na(x)))],names(n))
Run Code Online (Sandbox Code Playgroud)