簡體   English   中英

子集字符向量以在data.frame中創建列

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM