- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个数据集,其中包括三种土地覆盖类型的月度ndvi和降水量数据,每种类型共有26个站点,每个站点13年。我想运行一个循环,用每种土地覆盖类型的每个站每年用“ndvi”和“cv”填充矩阵m1。最后,我需要三个环形土地覆被矩阵的三个地块。
输入以下所示的脚本时,我遇到了错误。我不确定为什么会有“不同的行数”,因为每个站点每年总是有一个最大的ndvi值和一个cv值。有人可以针对我的错误提供建议吗?该脚本用于我的均值ndvi的分析,但以某种方式使用max则不行。
dput(head(d))
structure(list(row.names = c(1L, 1769L, 2055L, 2341L, 2627L,
2913L), timestamp = 1:6, station = structure(c(1L, 1L, 1L, 1L,
1L, 1L), .Label = c("Aiselukharka", "Anarmani", "BiratnagarAirport",
"Chainpur", "Chandragadhi", "Damak", "Dhankuta", "Diktel", "Dingla",
"Haraicha", "Ilam", "Kanyam", "Kechana", "KhotangBazar", "Leguwa",
"Letang", "ManebhanjyangBazar", "Muga", "Mulghat", "Num", "Okhaldunga",
"PakhribasBazar", "Phidim", "Sanischare", "Sankhuwasabha", "Tumlingtar"
), class = "factor"), year = c(2000L, 2000L, 2000L, 2000L, 2000L,
2000L), month = structure(c(5L, 4L, 8L, 1L, 9L, 7L), .Label = c("apr",
"aug", "dec", "feb", "jan", "jul", "jun", "mar", "may", "nov",
"oct", "sept"), class = "factor"), ndvi = c(0.4138, 0.4396, 0.4393,
0.6029, 0.4756, 0.4969), landcover = structure(c(3L, 3L, 3L,
3L, 3L, 3L), .Label = c("Cropland/Natural vegetation mosaic",
"Croplands", "Mixed forest"), class = "factor"), altitude = c(2143L,
2143L, 2143L, 2143L, 2143L, 2143L), altrange = structure(c(3L,
3L, 3L, 3L, 3L, 3L), .Label = c("0-500", "1501-2000", "2001+",
"501-1500"), class = "factor"), precipitation = c(16, 4, 25.5,
72.6, 241.7, 505.9)), .Names = c("row.names", "timestamp", "station",
"year", "month", "ndvi", "landcover", "altitude", "altrange",
"precipitation"), row.names = c(NA, 6L), class = "data.frame")
d <- read.csv("asort.csv", header = TRUE, sep = ",")
stations <- levels(d$station)
landcover <- levels(d$landcover)
allyears=c$year[ ! duplicated( c$year)]
for(lc in landcover) {
m1=NULL
for(j in stations){
for (i in allyears){
tmp <- d[d$landcover==lc & d$station==j & d$year==i,]
ndvi<- tmp$ndvi[which.max(tmp$ndvi)];
precip_2m<-tmp$precipitation[tmp$month %in% c("feb","mar","apr","may","jun","jul","aug")]
cv<-sd(precip_2m,na.rm=T)/mean(precip_2m, na.rm=T)
station=j
landcover=lc
year=i
lag=l
m1 = rbind(m1, data.frame(ndvi, cv,landcover, station, year))
}
}
cat("landcover=",lc)
print(summary(aov(ndvi~cv,data=m1)))
plot(ndvi~cv,main=lc,
xlab="cv of growing season precipitation", ylab="max ndvi ", data=m1)
abline(lm(ndvi~cv, data=m1))
fit = summary(lm(ndvi~cv, data=m1))
r2 = fit$adj.r.squared
my.p = fit$coefficients[2,4]
rp = vector('expression',2)
rp[1] = substitute(expression(italic(R)^2 == value.r), list(value.r = format(r2,dig=3)))[2]
rp[2] = substitute(expression(italic(p) == value.p), list(value.p = format(my.p, digits = 2))[2]
legend('topright', legend = rp, bty = 'n')
}
Error in data.frame(ndvi, cv, landcover, station, year) :
arguments imply differing number of rows: 0, 1
最佳答案
当特定子集(nrow(tmp)==0
)中没有值时,出现该错误。 mean
和您现在正在执行的操作之间的区别是mean(NULL)
实际上返回了长度为1的 vector ,而tmp$ndvi[which.max(tmp$ndvi)]
将返回长度为零的 vector 。这是您要具体分配的值(如站号,土地覆盖物等)始终具有长度1的值与您正在计算的值(可能为零长度)之间的不匹配,因此会出现不匹配错误。
因此,您可以做两件事。最简单的是更换
ndvi<- tmp$ndvi[which.max(tmp$ndvi)];
ndvi<- max(tmp$ndvi);
max
具有与
mean
相同的行为,只要它会返回某些内容。但这当然意味着您最终的结果中只是获得了奇怪的数据。您可以使用以下方法测试空
tmp
data.fames的替代方法
for (i in allyears){
tmp <- d[d$landcover==lc & d$station==j & d$year==i,]
if(nrow(tmp)>0) {
...
m1 = rbind(m1, data.frame(ndvi, cv,landcover, station, year))
}
}
aggregate
计算大多数这些值(尽管对于不同的摘要函数,您可能不得不多次调用它)。
关于r - 循环矩阵 “arguments imply differing number of rows”错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23916987/
例如,如果我的程序名称是 test.c 然后对于以下运行命令,argc = 2 而不是 4。 $test abc pqr* *xyz* 最佳答案 尝试运行: $ echo abc pqr* *xyz*
我正在尝试使用一个容器来显示TextField,但是该容器不喜欢我的操作顺序。这是我的代码: Widget build(BuildContext context) { return Scaffol
我有以下代码: class MetricGoogleGateway extends AMetricGateway{ constructor(id, name, token) {
我像这样调用下面的对象方法。 new Cout( elem1 ).load( 'body' ) new COut( elem1 ).display( 'email' ) 我一次只使用一个实例。因为我一
我正在尝试使用 C++11 中的可变参数函数模板,并通过如下代码了解了基本思想: void helper() { std::cout void helper( T&& arg ) {
在学习 ExtJS 4 时,我发现在定义一个新类时,在 initComponent 中方法可以使用 this.callParent(arguments) 调用父类的构造函数. 我想知道这个 argum
使用 XCode 9,Beta 3。Swift 4。 statsView.createButton("Button name") { [weak self] Void in //stuff st
以下代码将打印1: (function (arguments) { console.log(arguments); }(1, 2)); 实际上,arguments 对象已被覆盖。是否可以恢复函
/** * @param $name * @return Response * @Route ("/afficheN/{name}",name="afficheN") */ public fu
我习惯使用Scala scopt用于命令行选项解析。您可以选择参数是否为 .required()通过调用刚刚显示的函数。 如何定义仅在定义了另一个参数时才需要的参数? 例如,我有一个标志 --writ
所以这是我的代码: def is_valid_move(board, column): '''Returns True if and only if there is an o
我试图在这里运行此代码: threads = [threading.Thread(name='ThreadNumber{}'.format(n),target=SB, args(shoe_type,m
在静态类型函数编程语言(例如 Standard ML、F#、OCaml 和 Haskell)中,编写函数时通常将参数彼此分开,并通过空格与函数名称分开: let add a b = a + b
function validateArguments(args) { if(args.length 2) { throw new RangeError("Invalid amo
我正在使用 Django 1.5 并尝试将参数传递到我的 URL。当我使用前两个参数时,下面的代码工作正常,使用第三个参数时我收到错误。我已经引用了新的 Django 1.5 更新中的 url 用法,
我刚刚开始使用 ember js 并且多次被这个功能绊倒 有人可以简要介绍一下 this._super() 的使用,并解释 ...arguments 的重要性 谢谢 最佳答案 每当您覆盖类/函数(例如
这个问题在这里已经有了答案: How to fix an "Argument passed to call that takes no arguments" error? (2 个答案) 关闭 3
我正在创建一个简单的登录注册应用程序。但是我遇到了错误,我不知道如何解决,请帮忙!这是我的代码: // // ViewController.swift // CHLogbook-Applicati
我是 Swift 的初学者。我尝试创建一个表示 Meal 的简单类。 它有一些属性和一个返回可选的构造函数 但是当我尝试测试它或在任何地方实例化它时,我得到的只是一个错误。似乎无法弄清楚发生了什么。
我有一个在特殊环境下运行其他程序的系统程序: cset shield -e PROGRAM .现在要运行一个 java 程序,我输入了 cset shield -e java PROGRAM ,但这不
我是一名优秀的程序员,十分优秀!