我通过导入csv。
data<-read.csv('test.csv')
然后数据才有价值
> data
name a b c d
1 a 1 2 1 1
2 b 2 2 2 4
现在我希望在数据底部添加行,所以我添加
results <- c('aa',2,3,4,5)
data[nrow(data)+1,]<-results
但这会导致我交战并且未插入字符值。
Warning message:
In `[<-.factor`(`*tmp*`, iseq, value = "aa") :
invalid factor level, NA generated
并且数据的值=
> data
name a b c d
1 a 1 2 1 1
2 b 2 2 2 4
3 <NA> 2 3 4 5
但我想拥有
> data
name a b c d
1 a 1 2 1 1
2 b 2 2 2 4
3 aa 2 3 4 5
我是R语言的新手,已经尝试了多个小时,因此我们将不胜感激。谢谢。
答案 0 :(得分:2)
能否请您尝试以下操作:(我将数据放入此处,您可以使用dat <- read.table(text = "name a b c d
1 a 1 2 1 1
2 b 2 2 2 4",
header = TRUE,stringsAsFactors = FALSE)
dat
results <- c('aa',2,3,4,5)
rbind(dat,results)
)
stringAsFactors = FALSE
输出(不使用 name a b c d
1 a 1 2 1 1
2 b 2 2 2 4
3 <NA> 2 3 4 5
Warning message:
In `[<-.factor`(`*tmp*`, ri, value = "aa") :
invalid factor level, NA generated
):
name a b c d
1 a 1 2 1 1
2 b 2 2 2 4
3 aa 2 3 4 5
没有警告消息的输出:
$.alert({
title: 'Room display errors!',
content: 'Room ' + result + '<BR/>',
icon: 'fa fa-rocket',
animation: 'zoom',
boxWidth: '50%',
closeAnimation: 'zoom',
buttons: {
okay: {
text: 'Acknowledge',
btnClass: 'btn-blue'
window.top.location.href = 'confmon_a.php', // ERROR HERE
}
},
cancel: function() {
$.alert('canceled');
}
});
答案 1 :(得分:2)
这里有几个问题:
c(...)
与字符和数字混合使用,则结果为字符。data
是一个data.frame,而不是一个矩阵-这个问题错误地指出它是一个矩阵。 (如果它是矩阵,那么它将是字符矩阵,因为您不能在矩阵中混合使用字符和数字。)要解决这些问题,请在as.is = TRUE
中使用read.csv
并使用list
而不是c
:
data <- read.csv("test.csv", as.is = TRUE)
data[nrow(data) + 1, ] <- list('aa',2,3,4,5)
给予:
> data
name a b c d
1 a 1 2 1 1
2 b 2 2 2 4
3 aa 2 3 4 5
可复制形式的文件是从以下位置生成的:
Lines <- "name a b c d
1 a 1 2 1 1
2 b 2 2 2 4
"
temp <- read.table(text = Lines, as.is = TRUE)
write.csv(temp, "test.csv", row.names = FALSE, quote = FALSE)
答案 2 :(得分:1)
这应该有效。
data <- read.csv('test.csv', stringsAsFactors = FALSE)
在简短的说明中,默认情况下read.csv将每个字符列都视为一个因素。因子是一类特殊的数据,只能在创建时确定几个值。
答案 3 :(得分:1)
将'aa'作为levels
之一,它应与OP的factor
列一起使用。另外,由于list
可以容纳不同的type
而不是向量(由c
组成),因此请为下一行分配一个list
作为输入
levels(data$name) <- c(levels(data$name), 'aa')
data[nrow(data) +1,] <- list('aa', 2, 3, 4, 5)
data
# name a b c d
#1 a 1 2 1 1
#2 b 2 2 2 4
#3 aa 2 3 4 5
data <- structure(list(name = structure(1:2, .Label = c("a", "b"),
class = "factor"),
a = 1:2, b = c(2L, 2L), c = 1:2, d = c(1L, 4L)), .Names = c("name",
"a", "b", "c", "d"), row.names = c("1", "2"), class = "data.frame")