【问题标题】:What does "df[] <-" do in R“df [] <-”在R中做了什么
【发布时间】:2014-01-16 15:14:07
【问题描述】:

非常简单的问题,我在 google 和 stackoverflow 中进行了快速搜索。 我在另一个帖子中找到了这个:In aggregate: sum not meaningful for factors

df[] <- lapply(df, function(x) type.convert(as.character(x)))

df[] 是如何工作的?

【问题讨论】:

  • 简洁地说,df &lt;- 创建一个新对象,df[] &lt;- 修改一个现有对象。

标签: r variables dataframe


【解决方案1】:

为了补充 Roland 所写的内容,{edit} aaagh he ninja'd me w/ his comment 重点是使用 DF[] 保留现有对象 DF 及其属性,在在这种情况下,它有两个维度和名称 ab

Rgames> foo<- matrix(1:6,2,3)
Rgames> foo[]<-7:12
Rgames> foo
     [,1] [,2] [,3]
[1,]    7    9   11
[2,]    8   10   12
Rgames> foo<-7:12
Rgames> foo
[1]  7  8  9 10 11 12

【讨论】:

  • +1 表示它“保留现有对象 'DF' 及其属性”。
【解决方案2】:

它调用[&lt;-.data.frame(即[&lt;- 的data.frame 方法)。这样,您将列表分配给 data.frame。你也可以这样做

df <- as.data.frame(lapply(df, function(x) type.convert(as.character(x))))

例子:

DF <- data.frame(a=1:2, b=3:4)
DF[] <- list(c=10:11, d=12:13)
#    a  b
# 1 10 12
# 2 11 13

但与此相比:

DF <- `[<-.data.frame`(DF, , , list(c=c("a", "b"), d=c("d", "e")))
#   c d
# 1 a d
# 2 b e

VS。这个:

DF <- `[<-.data.frame`(DF, 1:2, 1:2, list(c=c("a", "b"), d=c("d", "e")))
#  a b
#1 a d
#2 b e

还有这个:

DF <- as.data.frame(list(c=10:11, d=12:13))
#    c  d
# 1 10 12
# 2 11 13

【讨论】:

  • 该成语也用于矩阵,例如m &lt;- matrix(1,5,5),然后将m[] &lt;- 5m &lt;- 5 进行比较。
  • 感谢您的快速回复!
猜你喜欢
  • 2014-08-03
  • 2011-11-11
  • 2016-11-19
  • 1970-01-01
  • 1970-01-01
  • 2013-01-14
  • 1970-01-01
  • 2011-03-23
  • 2019-03-18
相关资源
最近更新 更多