我知道如果我有一个超过1列的数据框,我可以使用
colnames(x) <- c("col1","col2")
Run Code Online (Sandbox Code Playgroud)
重命名列.如果它只是一列,我该怎么做?意味着矢量或数据框中只有一列.
例:
trSamp <- data.frame(sample(trainer$index, 10000))
head(trSamp )
# sample.trainer.index..10000.
# 1 5907862
# 2 2181266
# 3 7368504
# 4 1949790
# 5 3475174
# 6 6062879
ncol(trSamp)
# [1] 1
class(trSamp)
# [1] "data.frame"
class(trSamp[1])
# [1] "data.frame"
class(trSamp[,1])
# [1] "numeric"
colnames(trSamp)[2] <- "newname2"
# Error in names(x) <- value :
# 'names' attribute [2] must be the same length as the vector [1]
Run Code Online (Sandbox Code Playgroud) 在R数据帧编码的下面,我想更换所有时代B
与出现b.
junk <- data.frame(x <- rep(LETTERS[1:4], 3), y <- letters[1:12])
colnames(junk) <- c("nm", "val")
Run Code Online (Sandbox Code Playgroud)
这提供:
nm val
1 A a
2 B b
3 C c
4 D d
5 A e
6 B f
7 C g
8 D h
9 A i
10 B j
11 C k
12 D l
Run Code Online (Sandbox Code Playgroud)
我最初的尝试是使用for和if语句,像这样:
for(i in junk$nm) if(i %in% "B") junk$nm <- "b"
Run Code Online (Sandbox Code Playgroud)
但我相信你可以看到,这个替换所有的值junk$nm用b.我可以看到为什么这样做但我似乎无法让它只替换原始值为的那些垃圾$ nm的情况B.
注意:我设法解决了问题 …