相关疑难解决方法(0)

colnames函数如何分配新的列名?

我已经使用此功能很多次了,但是直到现在我才想“为什么它起作用?”。R的colnames()函数如何为数据帧分配新的列名?我的意思是我知道colnames(df)将如何返回数据框的列名。但是如何分配新的呢?

aa <- mtcars
colnames(aa)
colnames(aa) <- LETTERS[1:ncol(aa)]
colnames(aa)
# ^ how can colnames function either return column names or assign new ones? It's just a function.

# but we can't change the number of columns this way:
ncol(aa)
ncol(aa) <- 10

Run Code Online (Sandbox Code Playgroud)

到目前为止,colnames函数为:

function (x, do.NULL = TRUE, prefix = "col") 
{
    if (is.data.frame(x) && do.NULL) 
        return(names(x))
    dn <- dimnames(x)
    if (!is.null(dn[[2L]])) 
        dn[[2L]]
    else {
        nc <- NCOL(x)
        if (do.NULL) 
            NULL
        else if (nc > 0L) 
            paste0(prefix, seq_len(nc))
        else character() …
Run Code Online (Sandbox Code Playgroud)

r function variable-assignment

3
推荐指数
1
解决办法
46
查看次数

理解"ave"函数的源代码

以下是R中"ave"函数的源代码:

function (x, ..., FUN = mean) 
{
    if (missing(...)) 
        x[] <- FUN(x)
    else {
        g <- interaction(...)
        split(x, g) <- lapply(split(x, g), FUN)
    }
    x
}
Run Code Online (Sandbox Code Playgroud)

我无法理解赋值"split(x,g)< - lapply(split(x,g),FUN)"是如何工作的.请考虑以下示例:

# Overview: function inputs and outputs
> x = 10*1:6
> g = c('a', 'b', 'a', 'b', 'a', 'b')
> ave(x, g)
[1] 30 40 30 40 30 40

# Individual components of "split" assignment
> split(x, g)
$a
[1] 10 30 50
$b
[1] 20 40 60
> lapply(split(x, …
Run Code Online (Sandbox Code Playgroud)

r

1
推荐指数
1
解决办法
309
查看次数

附加分配新值的函数

我试图创建一个Append不返回值但直接扩展第一个变量的函数.目前,要追加yx我做的

x = append(x,y)
Run Code Online (Sandbox Code Playgroud)

我希望能够做到

Append(x,y)
Run Code Online (Sandbox Code Playgroud)

并得到相同的结果.我首先想到的是类似的东西

Append = function(a,b,VarName) assign(VarName,append(a,b), envir = .GlobalEnv)
Append(x,y,"x")
Run Code Online (Sandbox Code Playgroud)

它有效,但必须传递原始变量的名称是非常不满意的.有更好的解决方案吗?

arrays r

0
推荐指数
1
解决办法
50
查看次数

R:我可以更新 magrittr 管道中对象的类吗?

我有一段代码,用于更新对象的类。但是我必须打破代码的跟随才能分配课程。是否有一种优雅的方式来分配课程但继续管道,所以我有一个管道一直到最终结果?我怀疑 {purrr} 中可能有什么东西?

library(disk.frame)
library(dplyr)
library(tidyquery)

a = nycflights13::airports %>%
  as.disk.frame

class(a) <- c(class(a), "data.frame")

a %>% 
  query("SELECT name, lat, lon ORDER BY lat DESC LIMIT 5")
Run Code Online (Sandbox Code Playgroud)

r magrittr purrr

0
推荐指数
1
解决办法
179
查看次数

标签 统计

r ×4

arrays ×1

function ×1

magrittr ×1

purrr ×1

variable-assignment ×1