我有一个data.frame senti
:
p p p p
p p p p
p p p p
我更改了一列senti
(" n"的col),我尝试将每个p更改为1,因此我将代码编写为:
senti[,4] <- data$Category
senti[senti=="p"] <- 1
senti[senti=="n"] <- -1
然后,它不是数字1,所以我尝试将其转换为数字:
> senti<-as.numeric(senti)
Error: (list) object cannot be coerced to type 'double'
> senti[1,1]<-as.numeric(senti[1,1])
> senti[1,1]+senti[1,1]
Error in senti[1, 1] + senti[1, 1] :
non-numeric argument to binary operator
但是,它不起作用,我不明白为什么。我想可能有一些原始矩阵,但我的代码太长了,无法在这里粘贴所有这些。有人可以帮忙吗?
答案 0 :(得分:1)
你首先说你有一个数据框,然后说你有一个矩阵......这是什么?您的第二次尝试是将单个单元格转换为数字,但您不能在data.frame中使用混合列。您需要立即转换整个列
senti[,1:4] <- sapply(senti[,1:4], as.numeric)
也可能其中一列是列表,str(senti)
给出的是什么?您可能需要先取消该列的列表。
答案 1 :(得分:0)
您还可以通过以下方式获得结果:
senti <- read.table(text="p p p n
p p p n
p p p n",sep="",header=F)
senti[] <- c(1,-1)[unlist(senti)]
str(senti)
#'data.frame': 3 obs. of 4 variables:
#$ V1: num 1 1 1
#$ V2: num 1 1 1
#$ V3: num 1 1 1
#$ V4: num -1 -1 -1