无法从数据框中删除列,输出将变为逻辑向量

时间:2016-03-04 09:20:13

标签: r dataframe data.table splitstackshape csplit

我从data.frame函数获得的cSplit似乎有问题。

我无法使用以下代码提取没有NAs的列:

data_places <- data_table[ , colSums(is.na(data_table)) == 0 ]

输出是Named logi向量,而不是data.frame,它没有包含具有NA的行的列。

问题主要是由data.frame包的cSplit函数的splitstackshape输出引起的。使用data.table包也会出现此问题。

我尝试创建一个新的data.frame,用于提取data.frame函数cSplit输出的列,上面的代码运行正常。

任何想法cSplit的{​​{1}}输出有什么问题?

以下是我的代码示例:

data.frame

1 个答案:

答案 0 :(得分:2)

我们需要使用with=FALSE,因为cSplit的输出是data.table对象。

data_table[ , colSums(is.na(data_table)) == 0 , with=FALSE]
#      V1_1   V1_2
#1: Place1 Place1
#2: Place1 Place4
#3: Place6 Place6
#4: Place1 Place2

如果我们查看?data.table

  

用 -    默认情况下,= TRUE,j在x的帧内计算;   列名可以用作变量。当= FALSE时j是a   列名称的字符向量或列的数字向量   要选择的位置,返回的值始终是data.table。   with = FALSE通常在data.table中用于选择列   动态。

另一种选择是使用Filter

Filter(function(x) all(!is.na(x)), data_table)
相关问题