【问题标题】:Is there a way to loop over multiple data-frames to drop the same columns?有没有办法循环多个数据帧以删除相同的列?
【发布时间】:2019-04-26 09:35:52
【问题描述】:

我在R 中有不同的数据框,我想删除相同的四列,在整个循环中迭代所有这些列的过程。

当我使用子集并在单个数据框上进行选择时,这行代码可以正常工作。然而,一旦我尝试某种迭代,我总是会遇到某种错误。下面,我做了一些尝试

假设我有两个数据框 AB,我想删除列 sexagecitizenunit

当我使用子集并在单个数据框上选择时很好:

A=subset(A, select = -c(sex,age,citizen,unit))

然后我尝试创建两个数据框的列表并使用 for 循环如下:

df.list <- list(A, B)

for(i in 1:2) {

  df.list<- subset(i, select = -c(sex,age,citizen,unit))

}

但我收到错误消息:

subset.default 中的错误:缺少参数“subset”,没有默认值

【问题讨论】:

  • 尝试 '''lapply(df.list, function(x) subset(x, select = -c(sex,age,citizen,unit)))''' 我看到它显示正确结果,但它不会覆盖现有的数据帧。对此有何建议?

标签: r loops dataframe data-manipulation


【解决方案1】:

我不确定,因为我现在无权检查它,但它不应该是这样的吗:

for (i in 1:2) {
    df.list <- subset(df.list[i], select = ...)
}

因为您不想调用第一个参数 = 1 但第一个参数 = 列表中第 i 个元素的子集。

【讨论】:

  • 感谢您的回复,但我收到相同的错误消息(缺少参数子集)。当我查看两个数据框的列表时,我看到这两个都被标记为一个列表(在类型列下)和一个带有 X 行和 Y 列的小标题(在值列下)。这可能是问题的原因吗?
猜你喜欢
  • 1970-01-01
  • 2015-07-17
  • 2023-04-08
  • 1970-01-01
  • 1970-01-01
  • 2021-11-15
  • 1970-01-01
  • 1970-01-01
  • 2021-02-27
相关资源
最近更新 更多