楼主: K1ngFjsh
9063 19

[问答] 求助,R代码逐行单独运行 [推广有奖]

  • 0关注
  • 0粉丝

大专生

53%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
244 点
帖子
27
精华
0
在线时间
63 小时
注册时间
2021-3-4
最后登录
2023-6-2

楼主
K1ngFjsh 发表于 2022-2-27 20:33:38 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
请问在运用eval(parse)函数时,如何做到每行单独调用?现在想将参数表里的每个等级按年份匹配到主表中,示例数据集table如下:
年份     等级     参数
1           A
2           A
3           B
3           C
1           A
参数表Para:
等级    Y1    Y2     Y3     Y4
A
B
C
D
TABEL$P1 <- eval(parse(text=paste0("PARA$Y",TABEL$年份)))[TABLE$等级]


似乎R代码不同于SAS是每行单独调用,在parse函数里最终只会调用到最后一行的PARA$Y1,赋值给所有人。
此外很多时候我想逐行写代码根据前面某一列的数值去进行运算,他都会调用出整列,请问这种学名是叫什么啊?谢谢大神!



二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:R代码 Table ABLE Abel eval

沙发
s609078902 发表于 2022-2-28 09:51:54
用 dplyr::left_join() 合并就行
已有 2 人评分经验 论坛币 收起 理由
cheetahfly + 10 热心帮助其他会员
oliyiyi + 40 精彩帖子

总评分: 经验 + 40  论坛币 + 10   查看全部评分

藤椅
K1ngFjsh 发表于 2022-2-28 11:57:01
尝试过不用eval parse函数,改为Table$参数 <- Parameter[match(Table$等级,Parameter$等级),match(paste0("Y",Table$年份),colnames(Parameter))。但是一致判定[x,y]中y是一个list,不能逐行返回结果而是返回了一个list,把出现过的Y都匹配进来了

板凳
K1ngFjsh 发表于 2022-2-28 11:57:08
还有一个逐行运算的例子,比如我想对A列每行的数和10取最小值,TABLE$B <- min(TABLE$A,10)是直接取的整个A列的最小值和10去比。而不是每行去运行,请问该如何做到?

报纸
K1ngFjsh 发表于 2022-2-28 11:59:49
s609078902 发表于 2022-2-28 09:51
用 dplyr::left_join() 合并就行
将参数表参数合并为一列,列名和行名合并去进行匹配?比如A_Y1确实做到了,但是因为我涉及到后面很多运算,所以这个方法有些繁琐

地板
s609078902 发表于 2022-2-28 23:00:44
K1ngFjsh 发表于 2022-2-28 11:59
将参数表参数合并为一列,列名和行名合并去进行匹配?比如A_Y1确实做到了,但是因为我涉及到后面很多运算 ...
你把参数表的值填上,我再看看。应该变换下数据格式就行了

7
abelus 发表于 2022-3-2 13:44:27
完成这个任务,不需要用eval这么高大上的东东

eval parse这些,都是语言级别的功能,做分析的时候,一般人用不到。
如果感觉要用这个,通常花点功夫可以找到替代的函数。

8
abelus 发表于 2022-3-2 13:45:22
K1ngFjsh 发表于 2022-2-28 11:57
还有一个逐行运算的例子,比如我想对A列每行的数和10取最小值,TABLE$B
apply(mat, 1, function(x) {min(c(10, x))})

9
abelus 发表于 2022-3-2 13:46:03
merge函数即可

或者tidyverse系列包中的*join就搞定

10
K1ngFjsh 发表于 2022-3-3 11:14:34
abelus 发表于 2022-3-2 13:45
apply(mat, 1, function(x) {min(c(10, x))})
大佬,这函数我咋试了半天还是取的整个一列啊。。。比如我想对TABLE里的(参数)列进行处理,
我写的语句
TABLE$参数 <- apply(TABLE,1,function(x) {min(c(10, TABLE参数))})
咋还是不行。。我没太习惯R

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-8 16:08