将函数应用于数据框以修剪列表环境中的空列R

时间:2015-05-27 05:27:02

标签: r

我是R的天真用户,并且我正试图与“适用”'由于数据集的复杂性,我现在需要使用的一系列函数。

我有一个大而粗糙的数据框,我希望在进行一系列回归分析之前对其进行整形。通过隔行描述性数据(字符)行进一步复杂化。

我的约会方法是使用一个因子将数据帧拆分成具有相同行长度的集合(即列表),然后尝试删除尾随的空列,创建两个新的匹配列表,一个数据和其中一个字符然后使用整形来生成一个公共列号,然后重新组合每个列表中的集合。例如一个简化的例子:

myDF <- as.data.frame(rbind(c("v1",as.character(1:10)),

            c("v1",letters[1:10]),

                c("v2",c(as.character(1:6),rep("",4))),

                    c("v2",c(letters[1:6], rep("",4)))))

myDF[,1] <- as.factor(myDF[,1])

myList <- split(myDF, myDF[,1])

myList[[1]]

我可以删除单个集合的空列,并且可以将数据帧从隔行扫描行拆分为两个集合,但是在编写函数时难以使用语法将以下函数应用于列表 - 尽管&#39 ; lapply&#39;与&#39; seq_along&#39;应该这样做吗?

因此对于个人集:

DF <- myList[[2]]

DF <- DF[,!sapply(DF, function(x) all(x==""))]

DF

(来自此网站上类似但更简单的例子的早期答案)。我有一个大型数据集,想要一个优雅的解决方案(我可以使用循环,但不会有效地使用R的功能)。一旦我这样做了,我应该能够使用相同的理论来重塑帧然后重新组合它们。

问候

JAC

1 个答案:

答案 0 :(得分:0)

尝试

 lapply(split(myDF, myDF$V1), function(x) x[!colSums(x=='')])