【问题标题】:performing logical operation on data.frames within list对列表中的 data.frames 执行逻辑操作
【发布时间】:2016-08-19 13:24:37
【问题描述】:

我有一个维度为 10,2 的二维列表对象。 每个元素都包含一个 data.frame,其中包含 8100 个观测值和 2 个变量。

我正在尝试获取一个形状相同的对象,其中包含我在 data.frames 的每个元素上运行的测试的逻辑。

到目前为止,我尝试了下面的代码,但它为每个 data.frame 提供了一个逻辑,而不是这些中的元素

# sample data: http://www.filedropper.com/sample_1
# load('sample.Rdata')

str(temp)

List of 20
  $ :'data.frame':  8100 obs. of  2 variables:
..$ Var1: num [1:8100] -223 -224 -203 -198 -214 ...
..$ Var2: num [1:8100] -178 -178 -178 -178 -178 ...
  $ :'data.frame':  8100 obs. of  2 variables:
..$ Var1: num [1:8100] -223 -224 -203 -198 -214 ...
..$ Var2: num [1:8100] -178 -178 -178 -178 -178 ...
  $ :'data.frame':  8100 obs. of  2 variables:
..$ Var1: num [1:8100] -223 -224 -203 -197 -214 ...
..$ Var2: num [1:8100] -178 -178 -178 -178 -178 ...
  $ :'data.frame':  8100 obs. of  2 variables:
..$ Var1: num [1:8100] -223 -223 -203 -197 -214 ...
..$ Var2: num [1:8100] -177 -177 -177 -177 -177 ...
  $ :'data.frame':  8100 obs. of  2 variables:
..$ Var1: num [1:8100] -222 -223 -202 -197 -213 ...
..$ Var2: num [1:8100] -177 -177 -177 -177 -177 ...
  $ :'data.frame':  8100 obs. of  2 variables:
..$ Var1: num [1:8100] -222 -223 -202 -197 -213 ...
..$ Var2: num [1:8100] -177 -177 -177 -177 -177 ...
  $ :'data.frame':  8100 obs. of  2 variables:
..$ Var1: num [1:8100] -222 -223 -202 -196 -213 ...
..$ Var2: num [1:8100] -177 -177 -177 -177 -177 ...
  $ :'data.frame':  8100 obs. of  2 variables:
..$ Var1: num [1:8100] -222 -222 -202 -196 -213 ...
..$ Var2: num [1:8100] -176 -176 -176 -176 -176 ...
  $ :'data.frame':  8100 obs. of  2 variables:
..$ Var1: num [1:8100] -221 -222 -201 -196 -212 ...
..$ Var2: num [1:8100] -176 -176 -176 -176 -176 ...
  $ :'data.frame':  8100 obs. of  2 variables:
..$ Var1: num [1:8100] -221 -222 -201 -196 -212 ...
..$ Var2: num [1:8100] -176 -176 -176 -176 -176 ...
  $ :'data.frame':  8100 obs. of  2 variables:
..$ Var1: num [1:8100] -133 -134 -113 -108 -124 ...
..$ Var2: num [1:8100] -88.2 -88.2 -88.2 -88.2 -88.2 ...
  $ :'data.frame':  8100 obs. of  2 variables:
..$ Var1: num [1:8100] -133 -134 -113 -108 -124 ...
..$ Var2: num [1:8100] -88.2 -88.2 -88.2 -88.2 -88.2 ...
  $ :'data.frame':  8100 obs. of  2 variables:
..$ Var1: num [1:8100] -133 -134 -113 -108 -124 ...
..$ Var2: num [1:8100] -88.2 -88.2 -88.2 -88.2 -88.2 ...
  $ :'data.frame':  8100 obs. of  2 variables:
..$ Var1: num [1:8100] -133 -134 -113 -108 -124 ...
..$ Var2: num [1:8100] -88.2 -88.2 -88.2 -88.2 -88.2 ...
  $ :'data.frame':  8100 obs. of  2 variables:
..$ Var1: num [1:8100] -133 -134 -113 -108 -124 ...
..$ Var2: num [1:8100] -88.2 -88.2 -88.2 -88.2 -88.2 ...
  $ :'data.frame':  8100 obs. of  2 variables:
..$ Var1: num [1:8100] -133 -134 -113 -108 -124 ...
..$ Var2: num [1:8100] -88.2 -88.2 -88.2 -88.2 -88.2 ...
  $ :'data.frame':  8100 obs. of  2 variables:
..$ Var1: num [1:8100] -133 -134 -113 -108 -124 ...
..$ Var2: num [1:8100] -88.2 -88.2 -88.2 -88.2 -88.2 ...
  $ :'data.frame':  8100 obs. of  2 variables:
..$ Var1: num [1:8100] -133 -134 -113 -108 -124 ...
..$ Var2: num [1:8100] -88.2 -88.2 -88.2 -88.2 -88.2 ...
  $ :'data.frame':  8100 obs. of  2 variables:
..$ Var1: num [1:8100] -133 -134 -113 -108 -124 ...
..$ Var2: num [1:8100] -88.2 -88.2 -88.2 -88.2 -88.2 ...
  $ :'data.frame':  8100 obs. of  2 variables:
..$ Var1: num [1:8100] -133 -134 -113 -108 -124 ...
..$ Var2: num [1:8100] -88.2 -88.2 -88.2 -88.2 -88.2 ...
- attr(*, "dim")= int [1:2] 10 2
- attr(*, "dimnames")=List of 2
..$ : NULL
..$ : chr [1:2] "Var1" "Var2"


test <- function(x) {  
  x > -50 & x < -70
}

out = sapply(seq_along(temp), function(x) test(x))

【问题讨论】:

    标签: r list dataframe logical-operators


    【解决方案1】:

    我们需要根据索引获取“temp”,然后应用test。它将返回逻辑矩阵的list。根据 OP 对象中的描述,即相同的对象意味着具有相同的维度(?)。在这种情况下,请尝试

    lapply(seq_along(temp), function(i) test(temp[[i]]))
    

    【讨论】:

    • 是的,我希望输出具有相同的维度。这个提议的解决方案给出了一个包含 20 个元素而不是 10,2 的列表,但如果可以轻松转换的话。
    • @user255715 从str(temp) 开始,'temp' 的长度为 20,每个具有 2 列数据集。所以,我不确定第 10、2 条评论。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多