[英]Subsetting character vector to create columns in data.frame
我試圖創建一個新的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
)
}
但這會引發意外的=,)和}錯誤。 通常,這會讓我懷疑是錯字,但是我已經對此進行了數次審查,但找不到任何東西。 有任何想法嗎?
最簡單的方法可能是完全復制舊的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
您可以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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.