R的相关性;数字的
我以前处理过R的相关算法,但我不确定我当前的代码是怎么回事 我的输入数据是两个.csv文件。第一个只有一列,我强制它为data.frame。看起来是这样的(我的数据是很长的时间序列,所以我只显示前10个数据点): “我的其他文件”有多个列,如下所示:R的相关性;数字的,r,correlation,R,Correlation,我以前处理过R的相关算法,但我不确定我当前的代码是怎么回事 我的输入数据是两个.csv文件。第一个只有一列,我强制它为data.frame。看起来是这样的(我的数据是很长的时间序列,所以我只显示前10个数据点): “我的其他文件”有多个列,如下所示: X13_EVI X14_EVI X15_EVI X18_EVI 1 1.0492437 0.54155557 -0.58480284 -3.47111922 2 1.7274555 1.4614
X13_EVI X14_EVI X15_EVI X18_EVI
1 1.0492437 0.54155557 -0.58480284 -3.47111922
2 1.7274555 1.46141010 0.79416226 1.04050086
3 1.7274555 1.46141010 0.48772557 1.17721662
4 -0.1941446 -0.14833532 -0.12514781 0.22020630
5 -0.1941446 -0.14833532 -0.12514781 0.22020630
6 -0.5332505 -0.60826258 -0.73802119 -0.73680402
7 -0.4202152 -0.49328077 -0.12514781 -0.32665674
8 -0.9853917 -1.29815348 -1.04445787 -0.73680402
9 -0.3071799 -0.03335350 0.18128888 -0.46337250
10 0.5971025 1.00148284 1.10059895 0.63035358
当我试着去做
corr=cor(trends, all.obs)
我收到了错误信息
Error in cor(trends, all.obs) : 'x' must be numeric
我不记得以前遇到过这个问题,也不知道是什么原因造成的。在过去,我总是能够计算每个观察到的时间序列(all.obs中的列)和趋势(在本例中为1趋势)之间的相关性。我查过了
> is.numeric(trends)
[1] FALSE
> is.numeric(all.obs)
[1] FALSE
> is.data.frame(all.obs)
[1] TRUE
> is.data.frame(trends)
[1] TRUE
我也有
> typeof(all.obs)
[1] "list"
> typeof(trends)
[1] "list"
因为我有
> trends=as.numeric(trends)
Error: (list) object cannot be coerced to type 'double'
不过,我已经有一段时间没有使用这个工具了,所以可能我遗漏了一些非常明显的内容?尝试查看
趋势和所有.obs的所有列是否都存储为数字
为此,运行sappy(趋势,is.numeric)
和sappy(all.obs,is.numeric)
。如果在输出中看到任何FALSE
,则应借助as.numeric()
函数将其强制为numeric来修复
或者,避免此类问题的更好方法是在读取csv文件时指定列的类型。您可以使用read.csv
函数中的colClasses
参数来执行此操作。例如:
trends <- read.csv("PATH_TO_DATA_FOLDER/trends.csv", colClasses = "numeric")
all.obs <- read.csv("PATH_TO_DATA_FOLDER/all_obs.csv", colClasses = rep("numeric", 4))
trends尝试查看trends
和all.obs
的所有列是否存储为数字
为此,运行sappy(趋势,is.numeric)
和sappy(all.obs,is.numeric)
。如果在输出中看到任何FALSE
,则应借助as.numeric()
函数将其强制为numeric来修复
或者,避免此类问题的更好方法是在读取csv文件时指定列的类型。您可以使用read.csv
函数中的colClasses
参数来执行此操作。例如:
trends <- read.csv("PATH_TO_DATA_FOLDER/trends.csv", colClasses = "numeric")
all.obs <- read.csv("PATH_TO_DATA_FOLDER/all_obs.csv", colClasses = rep("numeric", 4))
trends尝试查看trends
和all.obs
的所有列是否存储为数字
为此,运行sappy(趋势,is.numeric)
和sappy(all.obs,is.numeric)
。如果在输出中看到任何FALSE
,则应借助as.numeric()
函数将其强制为numeric来修复
或者,避免此类问题的更好方法是在读取csv文件时指定列的类型。您可以使用read.csv
函数中的colClasses
参数来执行此操作。例如:
trends <- read.csv("PATH_TO_DATA_FOLDER/trends.csv", colClasses = "numeric")
all.obs <- read.csv("PATH_TO_DATA_FOLDER/all_obs.csv", colClasses = rep("numeric", 4))
trends尝试查看trends
和all.obs
的所有列是否存储为数字
为此,运行sappy(趋势,is.numeric)
和sappy(all.obs,is.numeric)
。如果在输出中看到任何FALSE
,则应借助as.numeric()
函数将其强制为numeric来修复
或者,避免此类问题的更好方法是在读取csv文件时指定列的类型。您可以使用read.csv
函数中的colClasses
参数来执行此操作。例如:
trends <- read.csv("PATH_TO_DATA_FOLDER/trends.csv", colClasses = "numeric")
all.obs <- read.csv("PATH_TO_DATA_FOLDER/all_obs.csv", colClasses = rep("numeric", 4))
trends尝试unlist
将列表变成一个向量。如果不是数字,请将其转换为数字。cor(cbind(trends,all.obs))
将提供一个相关矩阵,包括trends
中的一列和all.obs
中的所有列。这可能是最简单的修复方法。请尝试取消列表
将列表变成一个向量。如果不是数字,请将其转换为数字。cor(cbind(trends,all.obs))
将提供一个相关矩阵,包括trends
中的一列和all.obs
中的所有列。这可能是最简单的修复方法。请尝试取消列表
将列表变成一个向量。如果不是数字,请将其转换为数字。cor(cbind(trends,all.obs))
将提供一个相关矩阵,包括trends
中的一列和all.obs
中的所有列。这可能是最简单的修复方法。请尝试取消列表
将列表变成一个向量。如果不是数字,请将其转换为数字。cor(cbind(trends,all.obs))
将提供一个相关矩阵,包括trends
中的一列和all.obs
中的所有列。这可能是最简单的解决方法。即使提供的解决方案没有解决问题,但它会引导我找到解决方案,因此我将接受它作为答案。通过使用colClasses(这会产生错误,因此会进行更多的调查),我发现.csv文件中有一个“不完整的最后一行”(这是一个由R生成的文件-所以现在我知道这可能是个问题!)使用colClasses=“numeric”,工作起来很有魅力,谢谢:-),尽管提供的解决方案没有解决问题,它引导我找到解决方案,所以我将接受它作为一个答案。通过使用colClasses(这会产生错误,因此会进行更多的调查),我发现.csv文件中有一个“不完整的最后一行”(这是一个由R生成的文件-所以现在我知道这可能是个问题!)使用colClasses=“numeric”,工作起来很有魅力,谢谢:-),尽管提供的解决方案没有解决问题,它引导我找到解决方案,所以我将接受它作为一个答案。通过使用colClasses(这会产生错误,因此会进行更多的调查),我发现.csv文件中有一个“不完整的最后一行”(这是一个由R生成的文件-所以现在我知道这可能是个问题!)使用colClasses=“numeric”,工作起来很有魅力,谢谢:-),尽管提供的解决方案没有解决问题,它引导我找到解决方案,所以我将接受它作为一个答案。通过使用colClasses(这会产生错误,因此需要更多的检查),我发现.csv文件中有一个“不完整的最后一行”(这是一个fil文件)