【发布时间】:2021-05-20 16:59:42
【问题描述】:
我有一个正在使用的代码,其中包含以下行,
data2 <- apply(data1[,-c(1:(index-1))],2,log)
我知道这会从 data1 中创建一个新的数据框,将列值对数转换并消除一些列,但我不明白如何删除这些列。 1:(index-1) 到底是做什么的?
【问题讨论】:
-
大概
index是您之前在代码中定义的变量。它不是 R 中的特殊关键字。
我有一个正在使用的代码,其中包含以下行,
data2 <- apply(data1[,-c(1:(index-1))],2,log)
我知道这会从 data1 中创建一个新的数据框,将列值对数转换并消除一些列,但我不明白如何删除这些列。 1:(index-1) 到底是做什么的?
【问题讨论】:
index 是您之前在代码中定义的变量。它不是 R 中的特殊关键字。
“:”运算符创建一个整数序列。因为(1:(index-1) ) 是数字并且用于提取运算符“[”的第二个位置应用于数据帧,所以它指的是列号。编写代码的人不需要c-函数。它本来可以写得更经济:
data1[,-(1:(index-1))]
# but the outer "("...")"'s are needed so it starts at 1 rather than -1
所以它会从传递给apply 的对象中删除第一个index-1 列。 (正如 MrFlick 指出的那样,必须在将其传递给 R 之前定义索引。R 中的 index 没有默认值或解释。
【讨论】:
假设索引为 5,则索引 -1 返回 4,因此序列将从 1 到 4,即然后我们使用 - 表示循环遍历除前 4 列之外的列,如 MARGIN = 2
【讨论】: