簡體   English   中英

R:用paste()定義列名

[英]R: Define column name with paste()

問題很簡單,但我找不到解決方案。

我想創建一個新的數據paste0paste0定義列的名稱。

理想情況下,我想做這樣的事情(哪些不起作用)。

mydataframe <- data.frame(id = 1,
                          paste0('Here_','my_','column_','name') = 'foo')
# Error: unexpected '=' in:
#   "mydataframe <- data.frame(id = 1,
#                           paste0('Here_','my_','column_','name') ="

另外,為什么不起作用?

Data.frame是一個函數,因此接受參數。 這些參數不能是其他函數。 例如,您無法定義函數,如fn <- function(paste0('Hi_', 'how_are_you') = x) { x } R就是這樣不行。

但是,您仍然可以在事后動態更改列名:

df <- data.frame(1, 'foo')
names(df) <- c('id', paste0('Here_','my_','column_','name'))

那應該做你想要的。

獎勵:您可以按如下方式簡化粘貼: paste('Here', 'my', 'column', 'name', sep = '_')

你可以做

df[, paste('Here', 'my', 'column', 'name', sep = '_')] <- 'foo'

按照你的建議不可能這樣做,因為沒有評估變量,它只是得到你正在編寫的內容,並試圖將它用作列的名稱。 這樣, paste('Here', 'my', 'column', 'name', sep = '_')將被評估,返回的字符串實際上將用作列的名稱。

前段時間我需要同樣的東西,並通過以下評估將所有命令放入粘貼功能中解決了問題

i=3
mydf <- eval(parse(text = paste0(
  "data.frame( id =", 1, ", my_col", i, "=", 55, ")")))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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