我正在尝试创建一个新的data.frame
对象,该对象由旧data.frame
的列组成,每行设置为给定值(对于此示例,我将使用7)。但是,我遇到了问题,命名新data.frame
对象的变量。这就是我想要做的事情:
my.df <- data.frame(x = 1:3, y123=4:6)
my.df
x y123
1 1 4
2 2 5
3 3 6
然后当我尝试将这些变量名称分配给新的data.frame
:
the.names <- names(my.df)
for(i in 1:length(the.names)){
data.frame(
the.names[i] = 7
)
}
但这会引发意外=,)和}的错误。这通常会让我怀疑是一个错字,但我已经多次审查了这一点并且找不到任何东西。有任何想法吗?
答案 0 :(得分:1)
最简单的方法可能是完全复制旧的data.frame,然后将每个单元格分配给您的新值:
df <- data.frame(x=1:3,y123=4:6);
df2 <- df;
df2[] <- 7;
df2;
## x y123
## 1 7 7
## 2 7 7
## 3 7 7
如果您只想在新的data.frame中使用一行,则可以在复制时仅索引顶行:
df <- data.frame(x=1:3,y123=4:6);
df2 <- df[1,];
df2[] <- 7;
df2;
## x y123
## 1 7 7
修改:以下是将每列设置为不同值的方法:
df <- data.frame(x=1:3,y123=4:6);
df2 <- df;
df2[] <- rep(c(7,31),each=nrow(df2));
df2;
## x y123
## 1 7 31
## 2 7 31
## 3 7 31
答案 1 :(得分:0)
您可以使用within
:
> within(my.df, {
+ assign(the.names[1], 0)
+ assign(the.names[2], 1)
+ })
x y123
1 0 1
2 0 1
3 0 1