簡體   English   中英

R更改包含加號或方括號的列名稱

[英]R changing column names containing plus or brackets

我將data.frame列名data.frameR的變量中。 我的某些列名稱包含加號+ R+更改為. 將其保存到變量中時。 我想保留+以便在需要時可以自動再次選擇這些列。

這是我用來將列名保存到變量中的命令:

for (u in 1:50) {
    k <- colnames[u]
    f <- append(f,k)
}
## f is defined previously in my program

這是我用來重新獲取所需名稱的命令:

file2 <- file1[,f]

示例: column1+被命名為column1. 在變量f

注意:括號()和斜杠/

有什么想法可以解決這個問題嗎?

只是這個問題仍然得到回答。 設置選項check.namesFALSE在閱讀data.frame使用read.table為:

read.table(file, check.names = FALSE)

注意:正如@Roland在注釋下所說,最好使列名保持整潔而不是使用此參數。 您可能還會遇到某些功能會自動將名稱轉換回原來的情況。 例如,

df <- data.frame('x+y' = 1:4, 'a+b' = 5:8, check.names = FALSE)
> df
#   x+y a+b
# 1   1   5
# 2   2   6
# 3   3   7
# 4   4   8

# Now adding a 3rd column, using `transform`
transform(df, c=9:12)
#   x.y a.b  c  # note that it reverts back
# 1   1   5  9
# 2   2   6 10
# 3   3   7 11
# 4   4   8 12

transform(df, c=9:12, check.names = FALSE)
#   x+y a+b
# 1   1   5
# 2   2   6
# 3   3   7
# 4   4   8

您必須知道所有具有check.names=FALSE函數,並記住正確使用它們。 這是我至少想到的一個問題。 使列沒有沖突會更好。

在列名中包括+運算符也會干擾公式模型接口:

dat <- data.frame('a+x'=c(1,2,3,4),b=c(2,4,6,8),check.names=FALSE)
lm(dat$b~dat$a+x)
Error in eval(expr, envir, enclos) : object 'x' not found

您將需要使用lm(dat$b~dat[,'a+x'])

暫無
暫無

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

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