我想分配数据框的元素,但不想每次都输入类似controller-as
的内容,因为数据框的名称可能很长 strong>。另外,我不想使用df$x
,所以我转向attach
声明。但是,我无法让它工作(请参阅以下代码):
with
我在> df <- data.frame(x=1:5,y=5:1)
> with(df, {x[1]<-10
+ x[1]})
[1] 10
> df$x
[1] 1 2 3 4 5
&#34;声明&#34;中分配了10 df$x
的第一个元素,内部看起来很好。但是,一旦在with
之外,with
似乎没有改变。
我的问题是:如何在df$x
(或with
)内使其发挥作用?如果这是不可能的,除了within
之外还有其他选择吗?
答案 0 :(得分:2)
如前所述......使用data.table。
library(data.table)
只要您阅读data.frame,就将其转换为data.table
dt <- data.table(df)
然后就是:
dt[1,x:=10]
答案 1 :(得分:1)
within
是您正在寻找的。 p>
within(df, {
x[1] <- 10
})
x y
1 10 5
2 2 4
3 3 3
4 4 2
5 5 1
答案 2 :(得分:1)
with
返回已计算的expr的值,在本例中为x的修改值。因此,当您返回修改后的对象时,需要使用within
。
我认为你所面临的问题是你没有分配任何东西
df <- data.frame(x=1:5,y=5:1)
within(df, {x[1] <- 10})
正在返回
x y
10 5
2 4
3 3
4 2
5 1
然后df
返回
x y
1 5
2 4
3 3
4 2
5 1
所以你需要像
这样的东西df <- within(df, {x[1] <- 10})
这对你的长数据框架名称问题没有多大帮助。那怎么样呢?
df[1, "x"] <- 10
只键入一次或暂时将数据框重命名为更短的内容?