相关疑难解决方法(0)

如何动态命名变量?

是否可以动态创建新的变量名称?

我想将列表中的数据帧读入最后带数字的新变量.像orca1,orca2,orca3 ......

如果我尝试类似的东西

paste("orca",i,sep="")=list_name[[i]]
Run Code Online (Sandbox Code Playgroud)

我收到这个错误

target of assignment expands to non-language object
Run Code Online (Sandbox Code Playgroud)

还有另一种方法吗?

r assign r-faq

89
推荐指数
4
解决办法
9万
查看次数

在R中使用"粘贴"创建变量名称?

见下文:

 paste("perf.a", "1", sep="")
    [1] "perf.a1"
Run Code Online (Sandbox Code Playgroud)

如果我想分配值perf.a1怎么办?

我尝试了as.name,as.symbol等等,但无济于事:

as.name(paste("perf.a", "1", sep="")) = 5
Error in as.name(paste("perf.a", "1", sep = "")) = 5 : 
  target of assignment expands to non-language object
as.symbol(paste("perf.a", "1", sep="")) = 5
Error in as.symbol(paste("perf.a", "1", sep = "")) = 5 : 
  target of assignment expands to non-language object
noquote(paste("perf.a", "1", sep="")) = 5
Error in noquote(paste("perf.a", "1", sep = "")) = 5 : 
  target of assignment expands to non-language object
Run Code Online (Sandbox Code Playgroud)

r

77
推荐指数
3
解决办法
10万
查看次数

R语言的作业

我想知道如何在R语言中进行赋值.

考虑以下R shell会话:

> x <- c(5, 6, 7)
> x[1] <- 10
> x
[1] 10 6 7
>
Run Code Online (Sandbox Code Playgroud)

我完全理解.创建向量(5,6,7)并将其绑定到符号"x".之后,'x'会反弹到新的向量(10,6,7),因为向量是不可变的数据结构.

但这里发生了什么:

> c(4, 5, 6)[1] <- 10
Error in c(4, 5, 6)[1] <- 10 :
  target of assignment expands to non-language object
>
Run Code Online (Sandbox Code Playgroud)

或者在这里:

> f <- function() c(4, 5, 6)
> f()[1] <- 10
Error in f()[1] <- 10 : invalid (NULL) left side of assignment
>
Run Code Online (Sandbox Code Playgroud)

在我看来,只能为命名数据结构(如'x')赋值.

我问的原因是因为我试图实现R语言核心,我不确定如何处理这样的任务.

提前致谢

r variable-assignment

14
推荐指数
3
解决办法
6673
查看次数

使用带有替换函数的get()

任何人都可以向我解释为什么会出现以下示例?

#Create simple dataframe
assign( "df" , data.frame( P = runif(5) , Q = runif(5) , R = runif(5) ) ) 

#Return the dataframe from the given character vector
get( "df" ) 
            P          Q          R
1  0.17396222 0.90994676 0.90590685
2  0.33860092 0.98078739 0.38058921
3  0.80751402 0.93229290 0.82853094
4  0.05460417 0.55448507 0.01605027
5  0.04250316 0.03808318 0.40678270

#Return the column names of df
colnames( get( "df" ) )
[1] "P" "Q" "R"

#But using a replacement function...
colnames( get( "df" ) ) …
Run Code Online (Sandbox Code Playgroud)

syntax replace r function base

10
推荐指数
2
解决办法
1066
查看次数

在函数中使用Dplyr创建新数据框

我正在尝试使用R 3.2.2从dplyr 0.4.3函数创建新的数据框。

我想做的是使用dplyr :: filter创建一些新的数据帧,以将数据从一个巨大的数据帧中分离为一堆较小的数据帧。

对于可重现的基本案例沼泽简单示例,我使用了以下示例:

filter(mtcars, cyl == 4)
Run Code Online (Sandbox Code Playgroud)

我知道我需要将其分配给它自己的数据框,因此我从以下内容开始:

paste("Cylinders:", x, sep = "") <- filter(mtcars, cyl == 4))
Run Code Online (Sandbox Code Playgroud)

那没有用-它给了我在这里发现的错误:赋值扩展为非语言对象

从那里,我发现了这一点:在R中使用粘贴创建变量名

(也是上述作者的大事)

这使我想到了这一点,它起作用了:

assign(paste("gears_cars_cylinders", 4, sep = "_"), filter(mtcars, cyl == 4)) %>% 
    group_by(gear) %>% 
    summarise(number_of_cars = n())
Run Code Online (Sandbox Code Playgroud)

通过“工作”,我的意思是我得到一个名为gears_cars_cylinders_4的数据框,其中包含来自

filter(mtcars, cyl == 4) %>% 
        group_by(gear) %>% 
        summarise(number_of_cars = n())
Run Code Online (Sandbox Code Playgroud)

但最终,我认为我需要将整个东西包装到一个函数中,并能够将其的柱面数提供给它mtcars$cyl。我在想什么plyr::ldply(mtcars$cyl, function_name)

在我的实际数据中,我需要分解大约70个不同的类,以分成单独的数据框,然后放入DT::datatableShiny中的选项卡,这真是一团糟。无论如何。

当我尝试这个:

    function_name <- function(x){
    assign(paste("gears_cars_cylinders", x, sep = "_"), filter(mtcars, cyl == x)) %>% 
        group_by(gear) %>% 
        summarise(number_of_cars …
Run Code Online (Sandbox Code Playgroud)

r dplyr

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

标签 统计

r ×5

assign ×1

base ×1

dplyr ×1

function ×1

r-faq ×1

replace ×1

syntax ×1

variable-assignment ×1