我从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
答案 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)