【发布时间】:2015-08-13 01:39:10
【问题描述】:
R 如何解释括号?像大多数其他编程语言一样,这些是内置的运算符,我通常不假思索地使用它们。
但是,我遇到了这个例子。假设我们在 R 中有一个 data.table,我想在它的列上应用一个函数。那我可能会写:
dt <- data.table(my_data)
important_cols <- c("col1", "col2", "col5")
dt[, (important_cols) := lapply(.SD, my_func), .SDcols = important_cols]
显然我不能忽略括号:
dt[, important_cols := lapply(.SD, my_func), .SDcols = important_cols]
因为这会在我的 data.table 中引入一个名为 important_cols 的新对象,而不是修改我现有的列。
我的问题是,为什么将 ( ) 放在向量周围“展开”它?
这个问题的措辞和标题可能会更好。但是,如果我在询问时知道要使用的术语,那么我可能会通过谷歌搜索找到答案,因此我在这里。
当我们讨论这个话题时,如果有人能指出 [ ]、{ } 等之间的区别,以及它们应该如何使用,那也将不胜感激:)
【问题讨论】:
-
开括号表示参数列表的开头,开括号左侧的标记应该是函数名。如果 open-paren 左侧没有标记,则它是对
eval的隐式调用。您不应该使用 data.table 语法来学习 R 语法。这是一个真正的kewl包,但[.data.table中的语法完全不同@ -
您会发现很多关于使用
?"["的[帮助信息。?"{"上还有一些(但不多)信息。
标签: r data.table parentheses