[英]R: Define column name with paste()
問題很簡單,但我找不到解決方案。
我想創建一個新的數據paste0
用paste0
定義列的名稱。
理想情況下,我想做這樣的事情(哪些不起作用)。
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.