我有一个数据框Fold_change
,其列名为Well
,其中包含576个变量,分别名为A1
,A2
...等。
我想在前288个变量中添加前缀Plate_1_
,并在其余变量中添加前缀Plate_2_
。
我环顾四周,找到了可能的解决方案
Fold_change$Well <- paste0('Plate_1_', Fold_change$Well)
但是这里的问题是将名称更改为所有变量
所以我尝试指定行数:
Fold_change$Well[1:288] <- paste0('Plate_1_', Fold_change$Well[1:288])
但我收到此错误
警告消息:在
[<-.factor
(*tmp*
中,1:288中,值= c(NA,NA,NA, NA,NA,NA ,:无效的因子水平,生成的NA
答案 0 :(得分:1)
尝试:
Fold_change$Well <- as.character(Fold_change$Well) # change column class from factor to character first
Fold_change$Well[1:288] <- paste0('Plate_1_', Fold_change$Well[1:288])
答案 1 :(得分:0)
尝试首先将Well
列转换为字符串。然后执行操作,并在需要时将其转换回因子。
Fold_change$Well <- as.character(Fold_change$Well)
Fold_change$Well[1:288] <- paste0('Plate_1_', Fold_change$Well[1:288])
# anithing else
Fold_change$Well <- as.factor(Fold_change$Well)
答案 2 :(得分:0)
这是一个可能的解决方案,只需更改行号值:
dat <- data.frame(
col_a = paste0("A", 1:10)
)
dat #fake data, just 10 rows
# col_a
# 1 A1
# 2 A2
# 3 A3
# 4 A4
# 5 A5
# 6 A6
# 7 A7
# 8 A8
# 9 A9
# 10 A10
我们可以使用paste0
来更改值。借助gsub
,我们可以找到新的模式并针对所需的行进行更新(在示例中为第5至10)。
dat$col_a <- paste0("Plate_1_", dat$col_a) #changes names for all
dat$col_a[5:length(dat$col_a)] <- gsub("Plate_1_", "Plate_2_",dat$col_a[5:length(dat$col_a)])
#updates only for last 6 values
dat
# col_a
# 1 Plate_1_A1
# 2 Plate_1_A2
# 3 Plate_1_A3
# 4 Plate_1_A4
# 5 Plate_2_A1
# 6 Plate_2_A2
# 7 Plate_2_A3
# 8 Plate_2_A4
# 9 Plate_2_A5
# 10 Plate_2_A6