映射函数将R中函数的结果弄乱
我正在运行我在R中创建的名为映射函数将R中函数的结果弄乱,r,list,dataframe,function,time,R,List,Dataframe,Function,Time,我正在运行我在R中创建的名为getweather的函数,该函数有三个输入: getweather(站点号、数据类型、路径输出) 该函数的输出有两个列表: 当我使用Map运行函数以避免出现错误时函数停止时,函数的输出(两个列表:列表1和列表3)被合并或组合。代码如下: Results = Map(function(x, y, z) tryCatch(getweather(x, y, z), error = function(e) message(paste("Error in Stat
getweather
的函数,该函数有三个输入:
getweather(站点号、数据类型、路径输出)
该函数的输出有两个列表:
当我使用Map
运行函数以避免出现错误时函数停止时,函数的输出(两个列表:列表1和列表3)被合并或组合。代码如下:
Results = Map(function(x, y, z) tryCatch(getweather(x, y, z), error = function(e) message(paste("Error in Station", x))), x = siteNumber, y = datatype, z=path_out)
使用Map
运行该函数的输出是(这里合并了上面图像的列表):
我怎样才能解决这个问题?我希望输出作为第一个图像,但我认为当使用Map
时,我会弄乱两个输出列表
如果需要,我可以提供完整的功能。这是怎么回事
Map
将每个输入向量的第一个元素传递给getweather
:
李>x=站点编号[1]
李>y=数据类型[1]
李>z=path_out[1]
Map
将每个输入向量的第二个元素传递给getweather
,但最后两个元素只有一个元素,因此R将它们循环到siteNumber
的长度:
李>x=站点编号[2]
李>y=数据类型[1]
李>z=path_out[1]
Map
指令相当于下面的lappy
指令
Results <- lapply(siteNumber, function(x, y, z) {
tryCatch(
getweather(x, y, z),
error = function(e) message(paste("Error in Station", x))
)},
y = datatype,
z = path_out
)
结果再次显示为Hi。我再次建议您编写get_weather
函数时,应确保tryCatch
在函数内部。总之,基本上你想把所有的第一个元素合并在一起,然后把第二个元素列成一个新的列表,对吗?尝试new\u list我正在使用您建议的lappy函数,但是现在我得到了一个大列表,其中每个数据帧都有一个列表。如何取消列表中数据帧的列表?当我在do.call中执行rbind时,我丢失了dataframes@Sss那些df不是命名为元数据吗?您是否丢失了第一列,名称
,或行名称?
Results <- lapply(siteNumber, function(x, y, z) {
tryCatch(
getweather(x, y, z),
error = function(e) message(paste("Error in Station", x))
)},
y = datatype,
z = path_out
)
df_5_cols <- lapply(Results, '[[', 1)
df_6_cols <- lapply(Results, '[[', 2)
df_5_cols <- do.call(rbind, df_5_cols)
Results <- list(df_5_cols, df_6_cols)