0

这是我的代码:

>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在我的代码中是一个循环变量。

非常感谢您的热情回复!

4

1 回答 1

1

而不是as.name你应该使用get

length(get(paste0("all_data_align_",year)))

您需要检索对象而不仅仅是名称。

于 2014-03-24T13:00:14.077 回答