这是我的代码:
>ipo_num_year<- do.call(length,list(as.name(paste0("all_data_align_",year))))
>ipo_num_year
>90
>ipo_num_year<- length(as.name(paste0("all_data_align_",year)))
>ipo_num_year
>1
year
是一个字符串对象“1999”;
在前面的代码中,all_data_align_1999
已经被赋值为一个带有90
元素的列表,所以正确的结果是ipo_num_year
等于90
。但是第二行使ipo_num_year
等于1
,这意味着length()
函数将返回值as.name()
视为一个symbol
对象,所以它的长度只是1
。
为什么函数的返回值as.name()
不能直接作为函数的参数length()
?为什么第一个解决方案效果很好?
有人可能会问,为什么不直接使用length(all_data_align_1999)
. 那是因为year
在我的代码中是一个循环变量。
非常感谢您的热情回复!