[英]Replacement has length zero in R
我有这个函数,给我错误: 1111Error in b[i] <- z : replacement has length zero
的错误: 1111Error in b[i] <- z : replacement has length zero
...我找不到原因...任何帮助都将受到欢迎:)
a <- expand.grid(rep(list(1:4), 4))
b <- numeric(256)
generating_numbers <- function() {
for(i in 1:nrow(a)) {
for(j in 1:ncol(a)) {
z <- cat(a[i,j]) }
b[i] <- z }
}
generating_numbers()
此处的目的是将expand.grid
生成的数字组合保存到b
的列表中。 一切正常,而不是更改b
的值。
如果您试图使代码基本相同,则需要类似以下内容:
a <- expand.grid(rep(list(1:4), 4))
b <- numeric(256)
generating_numbers <- function() {
for(i in 1:nrow(a)) {
z <- paste(a[i,],collapse=" ")
b[i] <- z }
}
generating_numbers()
第二个for()
循环是不必要的,因为您正试图获取数字组合,所以您不想遍历每列...
...但是您可能可以在一行中完成相同的操作:
b <- apply(a,1,paste,collapse=" ")
...除非我误解了您要做什么。
更新:
我错过了有关出现在列表中的部分,因此这是使用修改后的代码版本将它们保留为元组的方法:
a <- expand.grid(rep(list(1:4), 4))
generating_numbers <- function() {
b <- NULL
for(i in 1:nrow(a)) {
z <- a[i,]
b[[i]] <- as.numeric(z) }
return(b)
}
generating_numbers()
...或者您可以利用数据帧是像这样的列表这一事实:
b <- as.list(as.data.frame(t(a)))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.