【问题标题】:R - Vector and operation with its elementR - 向量及其元素的运算
【发布时间】:2017-09-03 16:08:56
【问题描述】:

我有一个向量

x <- c(1:10).

然后我有如下代码

(x - min(x))/(max(x) - min(x))

上面再次返回一个向量。所以我的理解是:在 R 中,如果我使用值向量,那么我涉及的操作 x 适用于它的所有值。所以这个:

x - 1

将返回一个由x 的元素减去1 的向量。我对吗?

如果是这种情况,那么这应该适用于其他数据结构,例如 dataframelist

【问题讨论】:

  • 我不明白你最后一句话是怎么得出结论的。为什么你认为适用于一种数据结构的东西应该适用于不同的数据结构?

标签: r vector


【解决方案1】:

您所说的对于向量是正确的,但对于列表和 data.frames 则不是(请注意,data.frames 是一种特殊类型的列表)。

我在下面展示了我认为你想要达到的目的:

# test as vector
x <- c(1:10)
x - 1


# test as list
x <- list(1,2,3,4,5,6,7,8,9,10)
x - 1

# approperiate way to apply function to list
lapply(x, function(x) x - 1)

您可以看到虽然我可以轻松地从向量 x 中减去 1,但这在列表中会失败(并且也会在 data.frame 上失败)。这样做的原因是您必须指定要在 list/data.frame 的哪个元素上执行该函数,或者使用 lapply 将函数应用于 list/data.frame 的每个元素。

部分原因是 data.frames 和列表的元素可以包含向量、data.frames 和列表本身。因此,您需要清楚要将函数应用于什么。再举一个例子:

#list that contains vector as first and second elements
x <- list(c(1:10),c(1:10))

#apply function to both vectors in the list
x[[1]]-1
lapply(x, function(x) x - 1)

希望这能给您一些帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-24
    • 2022-11-21
    • 2018-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-01
    相关资源
    最近更新 更多