【发布时间】:2013-08-13 18:19:34
【问题描述】:
我的目标是获取数据框列表,查看数据框的特定列的最大值是否为 0,如果是,则从我的列表中删除该数据框。
现在我正在遍历列表的名称。鉴于这是 R,必须有更好的方法。我觉得我需要通过lapply() 应用一些功能才能做到这一点。我也考虑过ddply(),但我认为这可能有点矫枉过正。这是我目前所拥有的:
# Make df of First element
myColumn <- rep ("ElementA",times=10)
values <- seq(1,10)
a <- data.frame(myColumn,values)
# Make df of second element
myColumn <- rep ("ElementB",times=10)
values <- rep(0,10)
b <- data.frame(myColumn,values)
# Bind the dataframes together
df <- rbind(a,b)
#Now split the dataframes based on element name
myList <- split(df,df$myColumn)
# Now loop through element lists and check for max of 0 in values
for (name in names(myList)) { # Loop through List
if (max(myList[[name]]$values) == 0) { # Check Max for 0
myList <- myList[[-names]] # If 0, remove element from list
} # Close If
} # Close Loop
Error in -names : invalid argument to unary operator
我已经在循环外测试了我的代码,一切似乎都可以正常工作。
任何帮助是极大的赞赏。谢谢!
【问题讨论】:
-
所有数据框中的列是否相同?
-
是的。同一列在所有数据框中。
标签: r list function split dataframe