r - R语言赋值

标签 r variable-assignment

我想知道赋值如何在 R 语言中工作。

考虑以下 R shell session :

> x <- c(5, 6, 7)
> x[1] <- 10
> x
[1] 10 6 7
>

我完全理解。向量 (5, 6, 7) 被创建并绑定(bind)到
符号“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
>

或在这里:
> f <- function() c(4, 5, 6)
> f()[1] <- 10
Error in f()[1] <- 10 : invalid (NULL) left side of assignment
>

在我看来,只能将值分配给命名数据结构(如“x”)。

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

提前致谢

最佳答案

根据@Owen 对 this question 的回答, x[1] <- 10真的是在做两件事。它正在调用 [<-函数,它将调用的结果分配给 x.

那么你想要实现你的c(4, 5, 6)[1] <- 10结果是:

> `[<-`(c(4, 5, 6),1, 10)
[1] 10  5  6

关于r - R语言赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10719836/

相关文章:

R:将数据帧转换为可见网络

r - 在 R 中创建 SpatialPointsDataFrame 时如何保持缺失坐标

c++ - 将二维数组(指针)分配给对象中的变量以便在 C++ 中访问?

c++ - 如果在 C++ 中删除了其中一个对象怎么办?

当 df 也包含字符串时,将 data.frame 转换为数字矩阵的正确方法?

R 不接受某些带有变音符号的塞尔维亚字符 (č, ć)

r - 如何让我的线条更合身、更整洁?

java - Java表达式中的后自增和预自增

ruby - 使用 Ruby IO 流重新分配和重新打开之间的区别